我必须制作一个脚本来检查输入框(密码)是否发生了两次相同的字符。这应该与正则表达式验证一起使用(已经完全正常工作) 为了成功,我知道我需要以某种方式使用(for?)循环,检查一个字符是否出现两次。现在这是一件奇怪的事情要求。我知道。但我不完全确定该功能的条件。如果有人对如何做到这一点有任何建议,那就太好了。例如:“ABad12” - 将通过,而“AbAc12”将返回false。提前谢谢。
function checkForm(form)
{
var re = /^\w{6,10}$/;
if(!re.test(form.pwd1.value)) {
alert("Error: Password has to be in-between 6-10 characters!");
form.inputfield.focus();
return false;
}
}
上面举例说明了我希望将其与之结合使用的脚本(以及更多正则表达式验证)。
答案 0 :(得分:1)
我就是这样做的:
var str = "ABad12",
valid = str.split("").filter(function(e, i, a) {
return a.indexOf(e) !== i;
}).length === 0;
if (!valid) {
// ...
}
但请注意,旧版浏览器无法使用数组filter()
方法,因此请提前检查browser compatibility page。
答案 1 :(得分:0)
你不需要for循环。 一个简单的正则表达式就足够了:
(\w)\1+
var validateRegEx=/(\w)\1+/;
validateRegEx.test("aa") -> return true;
validateRegEx.test("ab") -> return false;
答案 2 :(得分:0)
这里是简单的(虽然有点蛮力)代码,没有正则表达式的纯JavaScript:
function check(s) {
var i;
for(i = 0; i < s.length - 1; i++) {
if(s.indexOf(s.substring(i,i+1), i+1) >= 0) {
return false;
}
}
return true;
}
它只是从头开始处理字符串,并检查每个字符是否在字符串后面出现该字符。
如果将其集成到代码中,则可以发出特定消息。在return false
之前,您可以调用错误报告功能,要求其显示例如'Error: character “' + s.charAt(i) + '” appears more than once.'