常规Exp。比赛

时间:2017-11-10 14:29:50

标签: .net regex

我尝试创建匹配的正则表达式

  

112 / AA-BB

但不是

  

111 / XX-ZZ-2

到目前为止我所尝试的是:\b[0-9]{3}(?:\W[A-Z]{2}){2}\b。但是,这也匹配第二个输入。有没有办法将整个表达式限制为9个字符或解决方法?

此处a link to my tests

2 个答案:

答案 0 :(得分:2)

看起来\ b仍在计算-作为单词边界,即单词的结尾。所以你可以做的就是添加一个负面的预测,以防止你的字符串匹配,如果它后跟一个破折号:

\b\d{3}\/[A-Z]{2}-[A-Z]{2}\b(?!-)

请参阅this demo

答案 1 :(得分:1)

我不清楚你想要它匹配什么,但可能你可以使用(?=.{9}[,\s$])添加以逗号,空格或其他分隔符结尾的指定长度字符串的前瞻。

因此,结果将类似于that

(?=.{9}[,\s$])[0-9]{3}(?:\W[A-Z]{2}){2}