如果它是字符串的最后一个字符或下一组不匹配,请不要匹配空格?

时间:2015-12-13 14:01:25

标签: regex

我有一个用于识别牙齿的正则表达式,正则表达式如下:

/((U|L)(R|L)[0-8a-eA-E](\s|\/|-|_)?((M|O|D|I|B|P|L)+)?)/gi

它应该(并且确实)匹配以下内容:

UR7

UR7 MOD

UR5-MOD

问题是,最后一部分(在UR和数字之后)是可选的,因此可能是它们没有被输入,这很好但是遗憾的是可选空间仍然匹配,例如:

UR7 

(请注意UR7之后的空格)也与空间相匹配..

我可以看到两种解决方法:

  1. 如果下一组匹配,则仅匹配此组(\ s | / | - | _)? 或
  2. 如果该组是匹配的最后一个字符,则不匹配该组(\ s | / | - | _)。
  3. 有人可以帮助我实现这个目标吗?

    所以上述匹配所需的行为是匹配的,但对于带有空格的UR7,只匹配UR7而不是空格!

    非常感谢你!

1 个答案:

答案 0 :(得分:0)

只有当分隔符后跟更多内容时才标记分隔符。

我还重构了为单个字符使用字符类,因为这通常更有效。

/[UL][RL][0-8a-eA-E]((\s|[-\/_])?[MODIBPL]+)?/gi