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

Javascript 不超过2个连续数字不超过2个重复字符的正则表达式?,javascript,regex,Javascript,Regex,我希望创建一个具有以下条件的正则表达式: 最小长度6 必须至少使用一个数字和一个字母 不超过2个连续数字(如123) 不超过2个重复字符 我能做到的 /^(?!.*([A-Za-z0-9!@#$&()\\-`.+,/?"])\1{2})(?=.*[a-z])(?=.*\d)[A-Za-z0-9!@#$&()\\-`.+,/?"]+$/ 这将验证字符串是否至少有一个数字和一个字母。 它不是连续的数字123,而是检查111。我不能在这里添加第四个条件 任何进一步的帮助都将不胜感

我希望创建一个具有以下条件的正则表达式:

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

/^(?!.*([A-Za-z0-9!@#$&()\\-`.+,/?"])\1{2})(?=.*[a-z])(?=.*\d)[A-Za-z0-9!@#$&()\\-`.+,/?"]+$/
这将验证字符串是否至少有一个数字和一个字母。 它不是连续的数字123,而是检查111。我不能在这里添加第四个条件

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

试试这个正则表达式:

^(?=[\D]*\d)(?=[^a-zA-Z]*[a-zA-Z])(?=.{6,})(?!.*(\d)\1{2})(?!.*([a-zA-Z])(?:.*?\2){2,}).*$

说明:

jj112233         -Matches as it has atleast one letter, digit. Not more than 2 consecutive digits/letter. Has atleast 6 characters
jkhsfsndbf8uwwe  -matches 
a1234            -does not match as length<6 
nsds312          -matches
111aaa222        -does not match as it has more than 2 consecutive digits and also more than 2 repeated letters 
aa11bbsd         -match
hgshsadh12       -does not match as it has more than 2 `h`
hh8uqweuu        -does not match as it has more than 2 `u`
  • ^
    -字符串的开头
  • (?=[\D]*\D)
    -正向前瞻-检查是否存在数字
  • (?=[^a-zA-Z]*[a-zA-Z])
    -正向前瞻-检查是否存在字母
  • (?=.{6,})
    -正向前瞻-检查是否至少存在6个文本
  • (?!*(\d)\1{2})
    -负前瞻-检查是否缺少3个连续数字。但它允许两个连续数字。如果您甚至不需要两个连续数字,请从此部件中删除{2}
  • (?!*([a-zA-Z])(?:*?\2){2,})
    -负前瞻-验证字符串中的字母不应出现超过2次
  • *
    -捕获字符串
  • $
    -字符串结尾
输出:

jj112233         -Matches as it has atleast one letter, digit. Not more than 2 consecutive digits/letter. Has atleast 6 characters
jkhsfsndbf8uwwe  -matches 
a1234            -does not match as length<6 
nsds312          -matches
111aaa222        -does not match as it has more than 2 consecutive digits and also more than 2 repeated letters 
aa11bbsd         -match
hgshsadh12       -does not match as it has more than 2 `h`
hh8uqweuu        -does not match as it has more than 2 `u`
jj112233-匹配,因为它至少有一个字母和数字。不超过2个连续数字/字母。至少有6个字符
jkhsfsndbf8uwwe-匹配
a1234-长度不匹配请尝试此正则表达式:

^(?=[\D]*\d)(?=[^a-zA-Z]*[a-zA-Z])(?=.{6,})(?!.*(\d)\1{2})(?!.*([a-zA-Z])(?:.*?\2){2,}).*$

说明:

jj112233         -Matches as it has atleast one letter, digit. Not more than 2 consecutive digits/letter. Has atleast 6 characters
jkhsfsndbf8uwwe  -matches 
a1234            -does not match as length<6 
nsds312          -matches
111aaa222        -does not match as it has more than 2 consecutive digits and also more than 2 repeated letters 
aa11bbsd         -match
hgshsadh12       -does not match as it has more than 2 `h`
hh8uqweuu        -does not match as it has more than 2 `u`
  • ^
    -字符串的开头
  • (?=[\D]*\D)
    -正向前瞻-检查是否存在数字
  • (?=[^a-zA-Z]*[a-zA-Z])
    -正向前瞻-检查是否存在字母
  • (?=.{6,})
    -正向前瞻-检查是否至少存在6个文本
  • (?!*(\d)\1{2})
    -负前瞻-检查是否缺少3个连续数字。但它允许两个连续数字。如果您甚至不需要两个连续数字,请从此部件中删除{2}
  • (?!*([a-zA-Z])(?:*?\2){2,})
    -负前瞻-验证字符串中的字母不应出现超过2次
  • *
    -捕获字符串
  • $
    -字符串结尾
输出:

jj112233         -Matches as it has atleast one letter, digit. Not more than 2 consecutive digits/letter. Has atleast 6 characters
jkhsfsndbf8uwwe  -matches 
a1234            -does not match as length<6 
nsds312          -matches
111aaa222        -does not match as it has more than 2 consecutive digits and also more than 2 repeated letters 
aa11bbsd         -match
hgshsadh12       -does not match as it has more than 2 `h`
hh8uqweuu        -does not match as it has more than 2 `u`
jj112233-匹配,因为它至少有一个字母和数字。不超过2个连续数字/字母。至少有6个字符
jkhsfsndbf8uwwe-匹配


a1234-长度不匹配
我能实现的
-以及,这能实现什么。。。据我所知,所取得的成果是,至少必须使用一个数字和一个字母(如果你是说相邻的话,可能不超过两个重复字符),单独使用RegExp可能不会有帮助-它必须是一个RegExp答案吗?在这里,否定的前瞻可能很有用,但密码regex是一个问题,堆栈溢出已经很好地解决了。你自己做过研究吗?我对问题进行了编辑,使之更清楚。建议是否需要添加任何其他内容。@TimBiegeleisen我确实查看了已经回答的问题,并提出了我在问题中添加的内容。添加一些有效和无效的输入值
我能够实现的内容
-以及,这实现了什么。。。据我所知,所取得的成果是,至少必须使用一个数字和一个字母(如果你是说相邻的话,可能不超过两个重复字符),单独使用RegExp可能不会有帮助-它必须是一个RegExp答案吗?在这里,否定的前瞻可能很有用,但密码regex是一个问题,堆栈溢出已经很好地解决了。你自己做过研究吗?我对问题进行了编辑,使之更清楚。建议是否需要添加其他内容。@TimBiegeleisen我确实查看了已回答的问题,并提出了我在问题中添加的内容。添加一些有效和无效的输入值感谢回答,但这无法捕获“不超过2个重复字符”。例如,“aa1aa1aa”‘a’的重复次数不应超过2次,但在这里重复了6次。@AmanGupta我已经更新了答案。我现在也添加了第四个条件。任何字母在字符串中的重复次数都不会超过2次。它与“不超过2个重复字符”正确匹配。虽然我还需要添加一些条件,例如123、4566等连续数字是不允许的。虽然我需要添加一些条件,如123、123、4566等连续数字是不允许的。为了匹配这些条件,我还需要添加一些条件,如123、456等连续数字,如123、4566等连续数字是不允许的。为了匹配这些条件,我做了以下的匹配,我做了这样做::/(((((!!!!!!!!!!!!!!!2012 2012 2012)01212)12 12(((((((!!!!!!!!!123)123)123)123)123)123)123)123!!!!!!!!!!!!123)123)123)123((((((((((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!123)123)123)123)123)123)123)123)123)123)123)123)(^.{6,}$)/谢谢你的努力。谢谢你的回复,但这无法捕捉到“不超过2个重复字符”。例如,“aa1aa1aa”‘a’的重复次数不应超过2次,但在这里重复了6次。@AmanGupta我已经更新了答案。我现在也添加了第四个条件。任何字母在字符串中的重复次数都不会超过2次。它与“不超过2个重复字符”正确匹配。虽然我还需要添加一些条件,例如123、4566等连续数字是不允许的。虽然我需要添加一些条件,如123、123、4566等连续数字是不允许的。为了匹配这些条件,我还需要添加一些条件,如123、456等连续数字,如123、4566等连续数字是不允许的。为了匹配这些条件,我做了以下的匹配,我做了这样做::/(((((!!!!!!!!!!!!!!!2012 2012 2012)01212)12 12(((((((!!!!!!!!!123)123)123)123)123)123)123)123!!!!!!!!!!!!123)123)123)123((((((((((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!123)123)123)123)123)123)123)123)123)123)123)123)谢谢你的努力。