我最近几天正在使用正则表达式,现在需要制作与2位数匹配的正则表达式但数字应该彼此不同例如以下匹配:56,78,20 ......但是以下不应该匹配: 22,33,66或99
这个解决方案已经浪费了几天时间.所以任何建议都会受到欢迎.
捕获第一个数字,然后使用负向预测,并对第一个数字进行反向引用,以确保不会重复:
(\d)(?!\1)\d
Run Code Online (Sandbox Code Playgroud)
https://regex101.com/r/AxH6s8/1
如果您需要一个命名组:
(?<first>\d)(?!\k<first>)\d
Run Code Online (Sandbox Code Playgroud)
对于n没有任何重复数字的行中数字的一般解决方案,您可以执行类似的操作,除了\d*在反向引用之前放入负向前瞻:
^(?:(\d)(?!\d*\g{-1}))+$
Run Code Online (Sandbox Code Playgroud)
https://regex101.com/r/AxH6s8/2