关于javascript:d和d +之间有区别吗?

Is there a difference between d and d+?

本问题已经有最佳答案,请猛点这里访问。

https://www.freecodecamp.com/challenges/find-numbers-with-regular-expressions

我在FCC上上过一课,他们提到数字选择器D找到一个数字,在选择器前面加上一个+(d+)可以让它搜索多个数字。

我对它做了一些实验,注意到它是在搜索每个数字的表达式之后的g,而不是+。我尝试在表达式后面使用不带g的d+,它只匹配字符串中的第一个数字。

基本上,无论我使用d还是d+,只要表达式后面有g,它就会找到所有的数字。所以我的问题是,这两者有什么区别?

1
2
3
4
5
// Setup
  var testString ="There are 3 cats but 4 dogs.";

  var expression = /\d+/g;
  var digitCount = testString.match(expression).length;


末尾的g表示global,即您要搜索所有事件。没有它,你只会得到第一场比赛。

如你所知,\d表示一个数字。您可以添加量词来指定是要匹配下面的所有数字,还是以后要匹配一定数量的数字。

\d表示一个数字。

\d+表示所有的顺序数字。

所以假设我们有一个这样的字符串:

1
2
123 456
7890123

/\d/g[1,2,3,4,5,6,7,8,9,0,1,2,3]匹配

/\d/1匹配

/\d+/123匹配

/\d+/g[123,456,7890123]匹配

您也可以使用/\d{1,3}/g来表示要匹配序列中1到3位数字之间的所有匹配。

另一个常见的量词是星形符号,意思是0或更多。例如,/1\d*/g将匹配所有以1开头的数字序列,并且后面有0个或更多的数字。


对出现的\d进行计数,可以找到字符串中的位数。

计算\d+的出现次数将发现字符串中整数的数目。

即。

1
123 456 789

有9个数字,但有3个整数。


\d表示从0到9的任何数字,+表示"一次或多次"。

只要你的数字是一个数字,就没有区别,但是在字符串"我有23头奶牛"中,\d只匹配2,而\d+只匹配23。