Javascript正则表达式量词:匹配零次或多次是啥意思
Posted
技术标签:
【中文标题】Javascript正则表达式量词:匹配零次或多次是啥意思【英文标题】:Javascript regular expression quantifiers: what does it mean to match zero or more timesJavascript正则表达式量词:匹配零次或多次是什么意思 【发布时间】:2020-04-21 04:35:12 【问题描述】:所以我只是想澄清一下 javascript 正则表达式中的 * 量词到底是做什么的。 MDN 的定义如下:
x* 匹配前面的“x”项 0 次或多次。例如,/bo*/ 匹配“A ghost booooed”中的“boooo”和“A bird warbled”中的“b”,但“A goat grunted”中不匹配。
我对这个定义的理解是它会匹配一个“b”,它会匹配一个“b”后跟任意数量的“o”字符。那么它匹配“b”字符的事实是否不构成 1 匹配而不是 0?我猜是“0 次或多次”语句让我失望了。
【问题讨论】:
【参考方案1】:其中的重要短语是“前面的项目”。如果前面的项目是单个字符,就像这里一样,这意味着 那个 字符可以重复 0 次或更多次。 bo*
将匹配 b
,后跟零个或多个 o
s。单独的 o*
将匹配零个或多个 o
s。 b(?:oo)*
将匹配b
,或boo
,或boooo
等(零,或二,或四,或六,...o
s)
查看紧接在量词之前的标记,看看它在量化什么。
再举一个例子,[ab][xy]*
将匹配a
、或b
、或ax
、或axxxy
、或byxyy
。与 x
或 y
匹配的量词之前的标记 [xy]
会重复零次或多次。
【讨论】:
好的,所以我想我现在有了更好的理解,基于你所说的“那个角色被重复 0 次或更多次”。因此,在“b”后跟“o”以外的字符的情况下,事实上“b”没有重复,因此构成“零次或多次”......对吗? 对于bo*
,紧接在*
量词之前的标记是o
,而b
正常匹配,然后o
重复0 次或更多次。
以上是关于Javascript正则表达式量词:匹配零次或多次是啥意思的主要内容,如果未能解决你的问题,请参考以下文章