jQuery正则表达式验证

时间:2013-03-28 14:40:46

标签: javascript jquery regex forms validation

我想在我的表单上使用一个名为onsubmit的小jQuery函数来验证用户输入客户端。我希望字段#fname(名字)只允许a-z,A-Z和空格。返回false应该是停止提交表单。

function validateregister(){
    if (!($("fname") =~ [a-zA-Z ])) {
        return false;
    }
}

这是我的HTML:

<input type="submit" value="Join now!" id="registersubmit" class="paddingoutline2" onsubmit="return validateregister()">

当然,我稍后将在服务器端验证用户输入。当我提交表单时,它会给我一个“内部服务器错误”。这让我觉得我在函数validateregister()中犯了一个错误。有什么不对的吗?如果我对jQuery很新,那么任何帮助都会受到赞赏。

谢谢!

2 个答案:

答案 0 :(得分:5)

你想要的是

function validateregister(){
    return /^[a-zA-Z ]+$/.test($('#fname').val());
}

除了修改选择器建议使用valtest函数之外,我冒昧地改变了正则表达式:

  • ^$强制测试覆盖整个字符串
  • +至少需要一个字符

但是你知道如果你想让人们输入真正的名字,这个正则表达式可能会过于严格吗?例如,你的传递不会......

答案 1 :(得分:1)

你必须这样使用正则表达式:

function validateregister(){
    var nameRgx = /[a-zA-Z]/;
    var phoneRgx = /[0-9]/;
    if (!nameRgx.test($("#fname").val())) {
       return false;
    }
    if (!phoneRgx.test($("#phone").val())) {
       return false;
    }
}

并确保使用# id表示法或.类表示法引用您的元素。在您的代码中,您没有以适当的方式引用您的元素。

^ ---->Start of a string. 
$ ---->End of a string. 
. ----> Any character (except \n newline) 
{...}----> Explicit quantifier notation. 
[...] ---->Explicit set of characters to match. 
(...) ---->Logical grouping of part of an expression. 
* ---->0 or more of previous expression. 
+ ---->1 or more of previous expression. 
? ---->0 or 1 of previous expression; 
       also forces minimal matching when an expression might 
       match several strings within a search string. 

More Info about Regex writing