Jquery自定义验证无法正常工作

时间:2012-11-26 09:30:04

标签: javascript jquery regex validation

我处于无法使用Jquery的validate插件的情况。 所以我写了一个自定义验证器。但是测试功能由于某种原因不起作用。

代码运行正常,直到if (format.test(email)) {行。请分享您的知识。提前致谢

$(document).ready(function () {
    $("#MainContent_btnSubmit").click(function () {
        validateEmail();

    });
});






function validateEmail() {

    var format = "[a-zA-Z._0-9]@[a-zA-Z.0-9].[a-zA-Z]";
    var email = $("#MainContent_txtEmail").val();


    if (format.test(email)) {
        alert("Correct Email");
    }
    else {
        alert("Wrong Email");
    }

5 个答案:

答案 0 :(得分:3)

首先,正则表达式不是作为字符串写的。他们有自己的文字类型:

var format = /[a-zA-Z._0-9]@[a-zA-Z.0-9].[a-zA-Z]/;

其次,每个字符类只匹配一个字符。如果没有转义,.是通配符。此外,如果test的任何子字符串符合该模式,email将报告为true。所以你需要anchor模式。你可能意味着这样的事情:

var format = /^[a-zA-Z._0-9]+@[a-zA-Z.0-9]+\.[a-zA-Z]+$/;

第三,matching valid email addresses is harder than you think.

答案 1 :(得分:2)

format必须是RegExp对象:

var format = new RegExp("[a-zA-Z._0-9]@[a-zA-Z.0-9].[a-zA-Z]");

此外,我怀疑你希望这个值只包含一封电子邮件,所以请使用锚点:

var format = new RegExp("^[a-zA-Z._0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z]+$");

答案 2 :(得分:2)

您可以使用正则表达式"^[a-zA-Z._0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z]+$"并使用它创建一个RegExp对象

答案 3 :(得分:0)

我不确定这是否是复制粘贴错误,但是查看功能代码,可以看到您尚未关闭函数validateEmail()

答案 4 :(得分:0)

我认为你要么错过了顶部的jquery插件:

<script src='path-to-your-jQuery-plugin' type='text/javascript'></script>

function validateEmail() {

var format = /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/;
var email = $("#MainContent_txtEmail").val();


    if (format.test(email)) {
        alert("Correct Email");
    }
    else {
        alert("Wrong Email");
    }
}    // in your code here you missed the closing tag of the function