3

I am trying to count number of dot . in the string. I am trying with match() function for counting the dot, but it does not working.

I tried same script to count other string, letter and - which is properly working. I have following string

var string = "How are you doing . - today? You . - are such a nice person!";

I tried following script

var num = string.match(/-/g).length; // output 2
var num = string.match(/are/g).length; // output 2
var num = string.match(/a/g).length; // output 4
var num = string.match(/./g).length; // output 60

Can someone guide me why it match function does not support . and how can i count it. I would like to appreciate.

Ayaz Ali Shah
  • 3,453
  • 9
  • 36
  • 68

3 Answers3

12

The dot . is used in regex and matches a single character, without caring which character. You need to escape the dot, like string.match(/\./g).length. The \ is the escape, and says to treat the dot as a true ., instead of the special regex meaning.

Matt Goodrich
  • 4,875
  • 5
  • 25
  • 38
2

Escape the .

var string = "How are you doing . - today? You . - are such a nice person!";
var num = string.match(/\./g).length;
console.log(num);
lucky
  • 12,734
  • 4
  • 24
  • 46
0

Dot is a special character in regex and it matches with any char.

You have to use escape the dot.

var string = "How are you doing . - today? You . - are such a nice person!";
var num = string.match(/\./g).length; // output 60
console.log(num);

Another approach is to use brackets.

var num = string.match(/[.]/g).length; 
Mihai Alexandru-Ionut
  • 47,092
  • 13
  • 101
  • 128