所以我只是想弄清楚javascript正则表达式中的*量词到底做了什么。MDN的定义如下:
x*与前面的项"x"匹配0次或更多次。例如,/bo*/匹配"一个鬼booooed"中的"boooo"one_answers"一只鸟鸣叫"中的"b",但不匹配"一只山羊呻吟"中的任何内容。
我对这个定义的理解是,它将匹配一个"b",并且它将匹配后面跟着任意数量的"o"字符的"b"。那么,它与"b"字符匹配的事实是否会构成1匹配而不是0?我想是"0次或更多次"的说法让我很反感
其中的重要短语是"前一项"。如果前面的项目是一个字符,就像这里一样,这意味着那个字符可以重复0次或更多次。bo*
将匹配一个b
,然后是零个或多个o
s。单独的o*
将匹配零个或更多的o
s。b(?:oo)*
将匹配b
、或boo
、或boooo
等。(零个、或两个、或四个、或六个、…o
s(
看看紧挨在量词前面的标记,看看它在量化什么。
例如,[ab][xy]*
将与a
、b
、ax
、axxxy
或byxyy
匹配。量词[xy]
前面的标记与x
或y
匹配,重复零次或多次。