我正在使用一个reg表达式,允许4到8个数字之间的序列,但前两个和后两个不能相同。
例如
1245612 - 包含一场比赛
346731 - 没有匹配
789287 - 没有匹配
789278 - 包含比赛
答案 0 :(得分:1)
如果您希望前两位和后两位数相同(您的示例提示),则正则^(\d\d)\d{0,4}\1$
是合适的。
有关示例的正则表达式,请参阅http://regexr.com?33uuu。
答案 1 :(得分:1)
您有两种可能性:
两对相同时匹配
^(\d{2})\d{0,4}\1$
两对不同时匹配
^(\d{2})\d{0,4}(?!\1)\d{2}$
字符串开头的锚^
和字符串结尾的$
很重要,否则你会得到部分匹配。
答案 2 :(得分:0)
如果你真的想要你所描述的(前两位和后两位数字不匹配),那么你可以这样做:
(?!(\d\d)\d{0,4}\1)\d{4,8}
表达式的第一部分断言它不匹配形式[两位数] [0到4个其他数字] [再次相同的两位数]的表达式,然后放在一边从那里它将匹配从长度4到8的任何数字序列。
试用这个正则表达式(使用Javascript样式的正则表达式):
http://regexpal.com/?flags=g®ex=(%3F!(%5Cd%5Cd)%5Cd%7B0%2C4%7D%5C1)%5Cd%7B4%2C8%7D&input=3366
答案 3 :(得分:0)
对于此任务,reg表达式不需要或我不理解此任务。 你只需要将i [0]和i [1]与i [n]和i [n-1]进行比较。