Javascript,检查是否有相同的字符

Javascript,检查是否有相同的字符,javascript,validation,loops,for-loop,character,Javascript,Validation,Loops,For Loop,Character,我需要制作一个脚本,用于检查两次出现的相同字符的输入框(密码)。这应该与正则表达式验证一起使用(已经完全起作用了)。 为了成功,我知道我需要以某种方式使用(for?)循环,检查一个字符是否出现两次。这是一种奇怪的要求。我知道。但我不能完全确定函数的条件。如果有人对如何做到这一点有任何建议,那就太好了。例如:“ABad12”-将通过,而“AbAc12”将返回false。提前谢谢 function checkForm(form) { var re = /^\w{6,10}$/; if(

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


}

上面是一个示例,说明了我希望将它与哪个脚本结合起来(其中包括更多的正则表达式验证)。

我就是这样做的:

var str = "ABad12",
    valid = str.split("").filter(function(e, i, a) {
        return a.indexOf(e) !== i;
    }).length === 0;

if (!valid) {
    // ...
}

但请注意,数组方法在旧浏览器中不可用,所以请提前检查。

您不需要for循环。
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;
  }


}
一个简单的正则表达式就足够了:

(\w)\1+


var validateRegEx=/(\w)\1+/;
validateRegEx.test("aa") -> return true;
validateRegEx.test("ab") -> return false;
下面是简单的(虽然有点暴力)代码,纯JavaScript,没有regexp:

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;
}
功能检查{
var i;
对于(i=0;i=0){
返回false;
}
}
返回true;
}
它只是从一开始就处理字符串,并检查每个字符是否该字符稍后出现在字符串中


如果将其集成到代码中,则可以发出特定消息。在
返回false
之前,您可以调用一个错误报告函数,要求它显示例如
错误:字符“+s.charAt(i)+”多次出现。

这只适用于一个接一个的字符,这不是这里唯一的情况。对于延迟,我不得不想一想。但是如果使用这个代码,它可以加载一个有效的函数,对吗?如果我想让它与我当前的正则表达式一起使用,用于大写、小写和数字字符。当所有条件都满足时,我是否可以触发此函数“已经验证了吗?我想这需要稍微重写一下才能使用我当前的代码。我还是一个初学者,所以我很难想象最终结果。@Holmberg在问题正文中包含你的代码总是很好的,这样我们可以给你更精确的答案。我从你的答案中意识到了这一点,所以我现在就这么做了,我认为这已经足够了,但如果必要的话,我可以包含更多。我很抱歉这么痛苦,但据我所知,无论您输入的字符太少(如我的正则表达式所示),还是输入两个相同的字符,您都会收到一个通知—无论哪种方式,您都会收到相同的警报。但是,如果我希望这两个条件都生成它们自己的警报,并且仍然让它们都按它们应该的方式工作。这怎么可能呢?或者我可以使用你展示的代码,只是为了让正则表达式与它分开吗?@Holmberg对不起,我不懂瑞典语,所以我无法确定我们是否可以在一个警报下统一这两个检查:)只要将它们拆分为单独的
if
,它就会按照你的意愿工作。我的瑞典语尝试:)