尝试编写一个简单的正则表达式以匹配以下任一格式:XX-XXXXXX-XX-XX-XX
或XX-XXXXXX-XX-XX-XX-XX
其中X
是数字(0-9)
或字母字符(不区分大小写)
我测试了以下表达式:
/[0-9A-Za-z]{2}-[0-9A-Za-z]{6}-[0-9A-Za-z]{2}-[0-9A-Za-z]{2}-[0-9A-Za-z]{2}(?:-[0-9A-Za-z]{2})/
最终-XX
是非捕获组。
我正在尝试对以下条目进行测试:
0F-F5G67E-H4-j6-j7
0F-F5G67E-H4-j6-j7-8J
但是,它只匹配第二个。
以下是测试链接:http://regexr.com/3eebe
如果有任何专业人士可以伸出援手,我将不胜感激。
由于
答案 0 :(得分:1)
你忘了添加? (意思是"零或一次")在你的小组/[0-9A-Za-z]{2}-[0-9A-Za-z]{6}-[0-9A-Za-z]{2}-[0-9A-Za-z]{2}-[0-9A-Za-z]{2}(?:-[0-9A-Za-z]{2})?/
另外,添加g
标志以匹配测试环境中的两个组。
最后,为什么不将最后三个组合在一起:/[\w]{2}-[\w]{6}(?:-[\w]{2}){3,4}/g
?
答案 1 :(得分:0)
通过在末尾添加?
将该组标记为可选:
/[0-9A-Za-z]{2}-[0-9A-Za-z]{6}-[0-9A-Za-z]{2}-[0-9A-Za-z]{2}-[0-9A-Za-z]{2}(?:-[0-9A-Za-z]{2})?/
答案 2 :(得分:0)
答案 3 :(得分:0)
您在非捕获组后面缺少?
,因此请添加?
并设置g
标记
[0-9A-Za-z]{2}-[0-9A-Za-z]{6}-[0-9A-Za-z]{2}-[0-9A-Za-z]{2}-[0-9A-Za-z]{2}(?:-[0-9A-Za-z]{2})?