Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 最多具有2个连续相等字符和其他选项的Regexp_Javascript_Regex - Fatal编程技术网

Javascript 最多具有2个连续相等字符和其他选项的Regexp

Javascript 最多具有2个连续相等字符和其他选项的Regexp,javascript,regex,Javascript,Regex,我对正则表达式是全新的,我必须使用以下条件构建一个正则表达式: 8到15个字符之间 至少1个字母字符(a-z,a-z) 至少1个非字母(所有其他) 至少1个大写字母 至少1个非大写字母 最多2个连续相等字符(例如:接受“g”,接受“gg”,不接受“ggg”) 我试过用这个,但它只适用于最多5个连续相等字符(不明白为什么)。我做错了什么 var regexp = /^((?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z])(.{8,15})(?!.*(.)\1{2}))$/

我对正则表达式是全新的,我必须使用以下条件构建一个正则表达式:

  • 8到15个字符之间

  • 至少1个字母字符(a-z,a-z)

  • 至少1个非字母(所有其他)

  • 至少1个大写字母

  • 至少1个非大写字母

  • 最多2个连续相等字符(例如:接受“g”,接受“gg”,不接受“ggg”)

我试过用这个,但它只适用于最多5个连续相等字符(不明白为什么)。我做错了什么

var regexp = /^((?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z])(.{8,15})(?!.*(.)\1{2}))$/;
编辑它与

asdfghjkl1Q
asdfghjkl1QQQ
asdfghjkl1QQQQQ
asdfghjkl1QQQQQQ
asdfghjkl1QQQQQq
它不适用于任何人

asdfghjkl1Q
asdfghjkl1QQQ
asdfghjkl1QQQQQ
asdfghjkl1QQQQQQ
asdfghjkl1QQQQQq
我想得到的是: 与以下机构合作:

asdfghjkl1Q
asdfghjkl1QQ
asdfghjkl11
不使用:

asdfghjkl1QQQ
asdfghjkl1QQq
asdfghjkl111

我认为你不需要外部捕获组,所以你可以忽略它

您可以先使用前瞻
(?=.{8,15}$)
检查8,15个字符,直到字符串
$
结束

如果所有lookaheads匹配,则将任何字符匹配一次或多次
+

试着这样做:


看起来像密码验证。如果您发布几行测试数据,您可能会从中受益,这将帮助所有人更有效地帮助您将负面展望放在
(.{8,15})
部分之前。删除
{2}
并删除整个表达式周围的
()
,或者将
\1
更改为
\2
感谢链接,它看起来非常有趣……不幸的是,我不得不这样做;我试着把
(?!.*()\1{2})
放在
(.{8,15})
之前,但它根本不起作用,前一个也不起作用rules@GreatBigBore它非常简单:
if(regexp.test(password)){console.log(“ok!”);}else{console.log(“no…””);}