4位数字Pin正则表达式

时间:2014-10-14 20:17:18

标签: regex validation

使用jQuery Bootstrapvalidator并尝试为财务应用程序添加4位数针的附加验证。

所以我已经确定用户的输入有4位数字并且是数字。

/^\d{4}$/

现在我正在尝试进行以下额外的正则表达式验证并且卡住了。任何帮助将不胜感激。

  1. 确保4位数字不完全相同(即1111或9999)

  2. 不顺序(即1234,6789)

  3. 不是出生年份。为了简化,我只是排除以19或20开头的任何数字(即1986年,2004年)。

  4. 提前感谢您的帮助。

2 个答案:

答案 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)

这不适合使用正则表达式。您可能希望使用代码对此进行验证,因为除了难以通过正则表达式强制执行的其他规则之外,可能还有一个您要禁止的特定数字列表。即使您能够使用正则表达式执行此操作,结果表达式也将无法读取且无法维护。