使用jQuery Bootstrapvalidator并尝试为财务应用程序添加4位数针的附加验证。
所以我已经确定用户的输入有4位数字并且是数字。
/^\d{4}$/
现在我正在尝试进行以下额外的正则表达式验证并且卡住了。任何帮助将不胜感激。
确保4位数字不完全相同(即1111或9999)
不顺序(即1234,6789)
不是出生年份。为了简化,我只是排除以19或20开头的任何数字(即1986年,2004年)。
提前感谢您的帮助。
答案 0 :(得分:5)
您的第一个和第三个约束很容易转换为正则表达式:
^(?!(.)\1{3})(?!19|20)\d{4}$
在这里,我使用了两个负向前瞻,每个约束一个。
然而,尽管可能,非顺序约束对于正则表达式来说是不合理的错综复杂的处理。
在这里,你决定是否值得痛苦:
^(?!(.)\1{3})(?!19|20)(?!0123|1234|2345|3456|4567|5678|6789|7890|0987|9876|8765|7654|6543|5432|4321|3210)\d{4}$
答案 1 :(得分:1)
这不适合使用正则表达式。您可能希望使用代码对此进行验证,因为除了难以通过正则表达式强制执行的其他规则之外,可能还有一个您要禁止的特定数字列表。即使您能够使用正则表达式执行此操作,结果表达式也将无法读取且无法维护。