Javascript Regex查找组的范围是&';行不通
星期六快乐 我想知道Stackoverflow的用户能否给我一个关于某个特定正则表达式的线索Javascript Regex查找组的范围是&';行不通,javascript,regex,string,regex-lookarounds,Javascript,Regex,String,Regex Lookarounds,星期六快乐 我想知道Stackoverflow的用户能否给我一个关于某个特定正则表达式的线索 (^visite\d+)(?!\D) 上述正则表达式运行良好 它说: visite12345 --> is a good anwser (the string does match) visite1a --> is not a good anwser (the string doesn't match) 然而,对于: visite12345a --> It doesn't
(^visite\d+)(?!\D)
上述正则表达式运行良好
它说:
visite12345 --> is a good anwser (the string does match)
visite1a --> is not a good anwser (the string doesn't match)
然而,对于:
visite12345a --> It doesn't work.
实际上,输出是visite1234,而我希望得到与visite1a相同的答案(字符串不匹配)
我用来测试我的regexp
你知道怎么做吗?
非常感谢。正则表达式(^visite\d+(!\d)
匹配字符串开头的visite
,后跟一个或多个不应后跟非数字的数字
“问题”是引擎可以在\d+
模式内回溯,如果第三个数字后面没有非数字,它可以匹配2位数字
解决这一问题的最佳方法是检查实际需求并调整模式
如果数字是字符串中的最后一个字符,您只需用$
锚点替换先行
一个通用的解决方案是使子模式原子化,在正向前瞻和反向引用中包含一个捕获组,并确保前瞻更改为类似(?![A-zA-Z])
-如果有字母,则失败):
见
或者,如果单词边界应该跟在数字后面(即,数字后面应该跟一个字母、数字或下划线),请使用\b
而不是先行:
/^visite\d+\b/
请参见它在您的第一次输入中捕获
visite1234
。你想做什么?它完美地解决了问题。这很简单。。。我应该自己考虑一下。。。非常感谢。
/^visite\d+\b/