我正在寻找一个允许 4 - 8 个数字之间的序列的 reg 表达式,但前两个和后两个不能相同。
例如
1245612 - 包含匹配
346731 - 不匹配
789287 - 不匹配
789278 - 包含匹配
我正在寻找一个允许 4 - 8 个数字之间的序列的 reg 表达式,但前两个和后两个不能相同。
例如
1245612 - 包含匹配
346731 - 不匹配
789287 - 不匹配
789278 - 包含匹配
如果您希望前两位和后两位相同以匹配(您的示例表明这一点),那么正则表达式^(\d\d)\d{0,4}\1$
是合适的。
有关示例的正则表达式,请参见http://regexr.com?33uuu。
你有两种可能:
当两对相同时匹配
^(\d{2})\d{0,4}\1$
当两对不同时匹配
^(\d{2})\d{0,4}(?!\1)\d{2}$
^
字符串开头和结尾的锚点$
很重要,否则您将获得部分匹配。
如果您确实想要您所描述的内容(前两位和后两位不匹配),那么您可以执行以下操作:
(?!(\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
对于这个任务 reg 表达式不需要或者我不理解这个任务。你只需要将 i[0] 和 i[1] 与 i[n] 和 i[n-1] 进行比较。