正则表达式不超过2个连续数字不超过2个重复字符?

时间:2017-09-04 05:31:35

标签: javascript regex

我希望创建一个带条件的正则表达式:

  • 最小长度6
  • 必须至少使用一个数字和一个字母
  • 不超过2个连续数字(如123)
  • 不超过2个重复字符

我能够实现的目标

/^(?!.*([A-Za-z0-9!@#$&()\\-`.+,/?"])\1{2})(?=.*[a-z])(?=.*\d)[A-Za-z0-9!@#$&()\\-`.+,/?"]+$/

这验证字符串至少有一个数字和一个字母。 它不是连续的数字123,而是检查111.我无法在此添加第四个条件。

任何进一步的帮助将不胜感激。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

试试这个正则表达式:

[action.meta._id]:action.payload

Demo

<强>解释

  • ^(?=[\D]*\d)(?=[^a-zA-Z]*[a-zA-Z])(?=.{6,})(?!.*(\d)\1{2})(?!.*([a-zA-Z])(?:.*?\2){2,}).*$ - 字符串的开头
  • ^ - 积极前瞻 - 检查是否存在数字
  • (?=[\D]*\d) - 积极前瞻 - 检查是否存在信件
  • (?=[^a-zA-Z]*[a-zA-Z]) - 积极前瞻 - 检查是否存在至少6个文字
  • (?=.{6,}) - 否定前瞻 - 检查3个连续数字的无效。它将允许2个连续数字。如果您不想连续2位数字,则从此部分删除{2}
  • (?!.*(\d)\1{2}) - 否定前瞻 - 验证字符串中不应出现超过2次的字母
  • (?!.*([a-zA-Z])(?:.*?\2){2,}) - 捕获字符串
  • .* - 字符串
  • 的结尾

<强>输出:

$