使用带有-(连字符)
的正则表达式验证字符串要求:字符串只包含数字和-(连字符),不能以-(连字符)结尾,其他所有数字不能相同。
^([0-9-])(?!1+$)[0-9-]{5}$
上面的代码只允许数字和连字符,但不受限制,以连字符结束,并检查所有其他数字是否相同。
,
1111-1 Not allowed because all are same digits
1111-2 Allowed
11112- Not allowed as its end with - Hypen
-12345 Not allowed as its start with - hypen
您可以将模式写成
^(d)(?!(?:1|-)+$)(?!d*-d*-)[d-]{4}d$
^
字符串 起始(d)
捕获组1中的单个数字(?!
正向阴性(?:1|-)+$
检查右侧是否只有组1值或连字符
(?!d*-d*-)
Assert not 2连字符)
密切超前[d-]{4}
匹配4位数字或连字符$
字符串结束
d
匹配数字Regex演示
如果至少有1个连字符:
^(d)(?!(?:1|-)+$)(?=d*-)[d-]{4}d$
Regex演示
允许[01]
连字符:
^(?=.{6}$)(d)(?=.*(?!1)d)d+(?:-d+)?$
查看在线演示