我发现类似的问题Regular expression to match sets of numbers that are not equal nor reversed,但我在regexp中表现不佳,所以需要一个建议。 我有字符串,即:3344654865,我需要知道第一个字符是两个不相等的对。 我试过这个正则表达式
^(?:(\d)(?:\1)(\d)(?:\2))
但它只捕获对中的第一个数字
1. [0-1] `3`
2. [2-3] `4`
在示例3344654865中,它应捕获两对数字,其中对内的数字等于3 = 3,并且4 = 4。 如何升级我的正则表达式,它将从字符串的开头返回两个不相等的对?
答案 0 :(得分:2)
这对我有用^((\d)\2)(?!\1)(\d)\3.*
匹配第一个字符是两个不相等的对
Demo
更新:每个请求^((\d)\2)(?!\1)((\d)\4)
所需匹配为否。 1& 3
Demo
如果匹配必须是1& 2然后使用以前的模式之一来验证它是否符合您的条件,然后应用此模式^(\d\d)(\d\d)
答案 1 :(得分:1)
^((\d)\2)(?!\1)((\d)\4)
结果:
3344654865 -> (33, 3, 44, 4)
12345 -> fail (digits not same in pairs)
9 -> fail (too short)
3333 -> fail (two pairs same)
由于需要进行反向引用,很难消除一个角色的干预组。
答案 2 :(得分:1)
此:
^(\d+?)(?!\1)(\d+)
会给你:
33 - 44654865
制作相同长度的第二部分并非易事,但第二部分的第一部分保证与第一部分不同。所以你必须亲自去拿它们。
通过不重要,我的意思是你需要尝试1位,2位,3位数字,等等,交替或循环。