Javascript Regex查找组的范围是&';行不通

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

星期六快乐

我想知道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 work.
实际上,输出是visite1234,而我希望得到与visite1a相同的答案(字符串不匹配)

我用来测试我的regexp

你知道怎么做吗? 非常感谢。

正则表达式
(^visite\d+(!\d)
匹配字符串开头的
visite
,后跟一个或多个不应后跟非数字的数字

“问题”是引擎可以在
\d+
模式内回溯,如果第三个数字后面没有非数字,它可以匹配2位数字

解决这一问题的最佳方法是检查实际需求并调整模式

如果数字是字符串中的最后一个字符,您只需用
$
锚点替换先行

一个通用的解决方案是使子模式原子化,在正向前瞻和反向引用中包含一个捕获组,并确保前瞻更改为类似
(?![A-zA-Z])
-如果有字母,则失败):

或者,如果单词边界应该跟在数字后面(即,数字后面应该跟一个字母、数字或下划线),请使用
\b
而不是先行:

/^visite\d+\b/

请参见

它在您的第一次输入中捕获
visite1234
。你想做什么?它完美地解决了问题。这很简单。。。我应该自己考虑一下。。。非常感谢。
/^visite\d+\b/