Javascript,检查相同的字符

时间:2013-05-18 18:33:17

标签: javascript validation loops for-loop character

我必须制作一个脚本来检查输入框(密码)是否发生了两次相同的字符。这应该与正则表达式验证一起使用(已经完全正常工作) 为了成功,我知道我需要以某种方式使用(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;
  }


}

上面举例说明了我希望将其与之结合使用的脚本(以及更多正则表达式验证)。

3 个答案:

答案 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.'