JavaScript正则表达式输入验证

6

我希望验证我的输入,以便用户只能输入字母。问题是它只检查一个输入字段,但我使用了:input选择所有输入字段。

代码:

$('#formularID').submit(function() {
   var allInputs = $(":input").val();
   var regex     = new RegExp("[a-zA-Z]");
   if(regex.test(allInputs))
   {
       alert("true");
   }else
   {
       alert("false");
       return false;
   }
});

我非常感激能得到任何帮助!


当您想要测试整个字符串时,必须描述整个字符串(而不仅仅是一个字符)。但是,如果您构建一个不匹配主题的模式(例如使用具有禁止字符的否定字符类),则可以以另一种方式完成。在这种情况下,您只需要测试模式是否失败,一个字符就足够了。 - Casimir et Hippolyte
使用.each()循环遍历每个输入元素,通过执行$(":input").val()仅获取/测试第一个输入元素的值。 - Spencer Wieczorek
感谢快速回复!@Casimir et Hippolyte - 你们说得对,我使用了 ! 并且只是检查模式是否失败。@Spencer Wieczorek - (我不知道能不能这么做) 我使用了 $(":input").val().each() 但是他只是提交表单而没有检查值。 - user5616242
1个回答

10

首先,您需要循环遍历每个输入元素,您可以使用.each()来实现:

// Cycles through each input element
$(":input").each(function(){
    var input = $(this).val();
    ...
});

接下来,您的正则表达式仅检查第一个字符是否为字母,如果您想确保只有一串字母可以匹配,您需要使用^[a-zA-Z]+$

$(":input").each(function(){
    var input = $(this).val();
    var regex = new RegExp("^[a-zA-Z]+$");
    if(regex.test(input)) {
        alert("true");
    }else {
        alert("false");
        return false;
    }
});

这是一个Fiddle实例


我无法感谢你的足够!终于他检查了我所有的输入! - user5616242

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接