通过此验证,我已经花了几天时间.我使用JavaScript来验证的4位用户销,其不应该接受相邻的重复数字组成,例如1135
或1552
等它不应该接受的数字序列,例如:1234
或3456
或甚至1275
(0序列位数等12**
*56*
,**87
,21**
(即没有上升或下降的顺序).
我试过从@polygenelubricants的这个答案修改正则表达式
他的正则表达如下:
^(?=\d{4}$)(?:(.)\1*|0?1?2?3?4?5?6?7?8?9?|9?8?7?6?5?4?3?2?1?0?)$
但是,这也符合3579
这在我的情况下,它应该被允许,所以我修改了它是这样的(这在我的脑海意味着,比赛总共4个位数号码,然后查找所有的数字和检查,如果他们不重复多如果它没有找到它0
和它1
旁边的a 或a 1
和a 2
旁边的一个OR ...(并且降序相同))
^(?:\d{4}$)(?:(.)(?!\1)|0?1?|1?2?|2?3?|3?4?|4?5?|5?6?|6?7?|7?8?|8?9?|9?8?|8?7?|7?6?|6?5?|5?4?|4?3?|3?2?|2?1?|1?0?)$
然而,当我测试它时,我得到了所有4位数字,但它没有评估它们是否重复多次或排序.
请参阅运行示例
这样的事情怎么样:
(?!.*(?:(\d)\1|12|23|34|45|56|67|78|89|98|87|76|65|54|43|32|21))\d{4}
在这里测试:http://www.regexpal.com/ ? fam = 93673
如果需要包含0,请执行以下操作:
(?!.*(?:(\d)\1|01|12|23|34|45|56|67|78|89|98|87|76|65|54|43|32|21|10))\d{4}