我有一个简单的模式:

LU ?[0-9]{2,10}{(?!\w)


哪个应该匹配


LU115087220
LU 115087220
:LU115087220.
等等


基本上,只要它不在另一组字母数字字符(例如, JOHNLU115087220

请注意,此字符串埋在大的多行文本中,因此我不能使用^

我已经尝试了一个非捕获组:

(?:\W|\s)LU ?[0-9]{2,10}(?!\w)


但是运行regex.exec(str)仍会捕获第一组中的非字母数字字符,例如:LU115087220-> :LU115087220(应该是LU115087220)。

我在这里想念什么?

最佳答案

您的正则表达式中有一个额外的{,使所有事情都失败了。包含\w的否定前行几乎意味着单词边界\b。将您的模式包含在其中:

\bLU ?[0-9]{2,10}\b


Live demo

关于javascript - 匹配模式,只要它不在另一组字母数字字符内,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50474167/

10-10 16:52