我有一个简单的模式:
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/