我有
/ \ d + /
使用字符串>“tom666tom”
它与666匹配。当它击中汤姆的第一个时它不会失败吗?
正则表达式引擎究竟是如何工作的。我知道加号意味着一个或多个。
答案 0 :(得分:5)
如果你告诉正则表达式应该以这样的数字开头和结尾
,它将会失败/^\d+$/
^
定义字符串的开头,$
结束。
答案 1 :(得分:0)
模式搜索输入字符串中的一个或多个数字(+)
答案 2 :(得分:0)
您没有告诉您的表达式匹配整个字符串。如果字符串的任何部分包含一个或多个数字,则它将匹配。使用^
(行标记的零长度开始)和$
(行标记的零长度结束)来界定正则表达式,并指示该行上唯一的内容应为数字:{{ 1}}。
答案 3 :(得分:0)
因为+
匹配前面标记中的一个或多个。这是一场贪婪的比赛,而且 在满足下一个之前将匹配尽可能多的字符 令牌。
在正则表达式/\d+/
中,+
位于\d
之后,与任何数字匹配。
如定义所述,正则表达式引擎运行正常,因为它可以与之前的标记(\d
)匹配。
所以它会匹配数字直到遇到不匹配。
所以前面的令牌是\d
因此,正则表达式引擎工作正常。