我正在创建一个密码验证,要求是如果使用某个字符,则必须使用该字符3次,例如AABBBB、AABBAB或A999000AA。
我有一些限制每个字符使用3次的方法:^(?:(.)(?!(?:.*?\1){3}))*$
如何确保每个字符至少出现 3 次?
最佳答案
你可以这样做:
- 对字符串进行排序(这会降低复杂性)
/^(?:(.)\1{2})+$/
测试与三元组一个矿石匹配的正则表达式更多次。
function isStringValid(s) {
return !!s
.split("")
.sort()
.join("")
.match(/^(?:(.)\1{2})+$/)
;
}
/** IGNORE THE REST **/
function ValidateCtrl() {
var field = document.querySelector('#Test');
var btn = document.querySelector('#Validate');
function checkValue() {
console.log('val', isStringValid(field.value));
}
btn.addEventListener('click', checkValue);
}
document
.addEventListener('DOMContentLoaded', ValidateCtrl)
;
#Test {
margin-top: 20px;
display: block;
}
<button type="button" id="Validate">Validate</button>
<input id="Test" />
更新
如果您需要至少出现 3 次
相同字符:
/^(?:(.)\1{2,})+$/
最后\w
仅匹配[a-zA-Z0-9_]
:
/^(?:(\w)\1{2,})+$/
关于javascript - 正则表达式 至少使用 3 个任意字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41066597/