最近几天我正在使用正则表达式,现在需要制作与2位数字匹配的正则表达式,但是这些数字应该彼此不同 例如,将匹配以下内容: 56,78,20 ... 但是以下内容不匹配: 22、33、66或99
该解决方案已经浪费了几天。因此,任何建议都将受到欢迎。
答案 0 :(得分:5)
捕获第一个数字,然后使用负向搜索,并向后引用该第一个数字以确保不重复:
(\d)(?!\1)\d
https://regex101.com/r/AxH6s8/1
如果您需要一个命名组:
(?<first>\d)(?!\k<first>)\d
对于连续的n
位数字而没有任何重复数字的一般解决方案,您可以执行类似的操作,除了将\d*
放在负向查找中,放在反向引用之前:
^(?:(\d)(?!\d*\g{-1}))+$