我有以下正则表达式,我希望第一组的匹配替代方案是第二组的匹配替代方案。
(?i)^([a-z]+|\d+)-([a-z]+|\d+)$
基本上我想要的是如果第一组中\[a-z\]
匹配我只希望该模式与第二组匹配,并且如果\\d
匹配第一组,我希望只有该模式匹配第二组。
我尝试使用包含[a-z]+)-([a-z]+)|(\d+)-(\d+)
的扩展正则表达式,但这给了我4个组1,2
或3,4
,其中一组已填充,另一组为null
。< / p>
1,2
的情况下进行调整,因此我不必测试哪些群组实际匹配。给出以下输入:
10-15
XX-ZZ
5-A
a-1000
10-15
应该匹配
XX-ZZ
应该匹配
5-A
应不匹配
a-1000
应该不匹配
答案 0 :(得分:1)
这是你的正则表达式:
/(?i)^([a-z]+|\d+)-([a-z]+|\d+)$/
请参阅以下内容:
/(?i)^(?:([a-z]+)|\d+)-(?(1)[a-z]+|\d+)$/
答案 1 :(得分:0)
答案 2 :(得分:0)