Regex 如果空白是字符串的最后一个字符或下一组不匹配,则不匹配空白?

Regex 如果空白是字符串的最后一个字符或下一组不匹配,则不匹配空白?,regex,Regex,我有一个用于识别牙齿的正则表达式,正则表达式如下: /((U|L)(R|L)[0-8a-eA-E](\s|\/|-|_)?((M|O|D|I|B|P|L)+)?)/gi 它应该(并且确实)符合以下要求: UR7 UR7模块 UR5-MOD 问题是,最后一部分(在UR和数字之后)是可选的,因此可能没有输入,这很好,但不幸的是,可选空间仍然匹配,例如: UR7 (请注意UR7后面的空格)也与空格匹配 我可以找到两种方法来解决这个问题: 如果下一组匹配,则仅匹配此组(\s |/|-| |)? 或

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

/((U|L)(R|L)[0-8a-eA-E](\s|\/|-|_)?((M|O|D|I|B|P|L)+)?)/gi
它应该(并且确实)符合以下要求:

UR7

UR7模块

UR5-MOD

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

UR7 
(请注意UR7后面的空格)也与空格匹配

我可以找到两种方法来解决这个问题:

  • 如果下一组匹配,则仅匹配此组(\s |/|-| |)? 或
  • 如果组(\s |/|-| |)是匹配的最后一个字符,则不匹配该组
  • 谁能帮我实现这个目标

    因此,期望的行为是所有上述匹配匹配,但对于带有空格的UR7,仅匹配UR7,而不匹配空格


    非常感谢你

    仅当分隔符后面有其他内容时,才将其标记为允许

    我还进行了重构,将字符类用于单个字符,因为这样通常效率更高

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

    你打算8点停车吗/((U | L)(R | L)[0-8a-eA-E](\s | \/|-|U);((M | O | D | I | B | P | L)+)/gi@Tony似乎证实了人类的牙齿只能长到8。。。。虽然我们显然应该排除零。哈哈,这取决于使用的系统,但有32颗牙齿。但是关于排除0,您是对的!!哈哈,很好地抓住了0!谢谢各位