1

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,305
  • 8
  • 35
  • 64

3 Answers3

9

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,471
  • 4
  • 24
  • 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
  • 12,110
  • 4
  • 20
  • 41
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
  • 44,345
  • 11
  • 88
  • 115