连续、重复字符超过三个以上,正则表达式该怎么写?

1,484 阅读1分钟

1.需求概述

  • 任意字符不能超过三个及以上,如“111”,“¥¥¥3”?
  • 连续递增或递减的数字不超过三个及以上,如“123”,“654”?
  • 连续正序或倒序的字母不超过三个及以上,如“abc”,“cba”?

2.正则表达式

  • 任意字符不能超过三个及以上,如“111”,“¥¥¥3”?
// 这个正则表达式很好写啊
const reg1 = /^(?!.*(·)\1{2,})$/;
  • 连续递增或递减的数字不超过三个及以上,如“123”,“654”?
const reg2 = /^(?!.*(?:012|210|123|321|234|432|345|543|456|654|567|765|678|876|789|987)).+$/
  • 连续正序或倒序的字母不超过三个及以上,如“abc”,“cba”?
const reg3 = /(?!.*(?:ABC|CBA|BCD|DCB|CDE|EDC|DEF|FED|EFG|GFE|FGH|HGF|GHI|IHG|HIJ|JIH|IJK|KJI|JKL|LKJ|KLM|MLK|LMN|NML|MNO|ONM|NOP|PON|OPQ|QPO|PQR|RQP|QRS|SRQ|RST|TSR|STU|UTS|TUV|VUT|UVW|WVU|VWX|XWV|WXY|YXW|XYZ|ZYX)).+$/i

3.总结

  • 实在没有想到更好的方法,然后就用的枚举法,也是参考网友的,中间的三个字符可以写个方法自动生成,避免输错。
  • 大佬们这个正则还有什么更好的写法吗?求指教?