0

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 Shah
  • 3,155
  • 7
  • 31
  • 62

3 Answers3

7

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,053
  • 4
  • 23
  • 35
1

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
  • 11,548
  • 4
  • 18
  • 35
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
  • 41,021
  • 10
  • 77
  • 103