正则表达式匹配2位数字但不同的数字

时间:2018-07-28 22:24:19

标签: regex

最近几天我正在使用正则表达式,现在需要制作与2位数字匹配的正则表达式,但是这些数字应该彼此不同 例如,将匹配以下内容: 56,78,20 ... 但是以下内容不匹配: 22、33、66或99

该解决方案已经浪费了几天。因此,任何建议都将受到欢迎。

1 个答案:

答案 0 :(得分:5)

捕获第一个数字,然后使用负向搜索,并向后引用该第一个数字以确保不重复:

(\d)(?!\1)\d

https://regex101.com/r/AxH6s8/1

如果您需要一个命名组:

(?<first>\d)(?!\k<first>)\d

对于连续的n位数字而没有任何重复数字的一般解决方案,您可以执行类似的操作,除了将\d*放在负向查找中,放在反向引用之前:

^(?:(\d)(?!\d*\g{-1}))+$

https://regex101.com/r/AxH6s8/2