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”)
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…””);}