我想编写一个正则表达式,接受遵循此规则的所有单词:
这些是“好”的话:
T3L9A8L4
A1B2
Q2W4E6R8A1B3D5F7
这些是“坏”字:
T3
TT33
Y3Y4Y6
T1A2B3T1
我如何为此编写正则表达式? 很抱歉没有添加任何代码 - 不知道如何开始编写代码。
答案 0 :(得分:1)
正则表达式可以满足你的前3个点,
([A-Z]\d[A-Z]\d)+
http://rubular.com/r/GXB4BGKQFT
但它(实际上)不能满足最后一个
数字只能在单词
中出现一次
为了实现这一点,你必须对每个可能的数字排列都有不同的情况,这可能是 10!个案
答案 1 :(得分:1)
您可以使用负向前瞻来防止重复数字和反向引用吗?
^(?!.*(\d).*\1)(?:(?:[A-Z]\d){2})+$
^^^^^^^^^^^^^^
这是负面的预测。如果再次显示该数字,则会捕获一个数字并取消匹配。