【问题标题】:Jquery Custom Validation not working properlyJquery自定义验证无法正常工作
【发布时间】:2012-11-26 09:30:03
【问题描述】:

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

代码运行良好,直到行 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");
    }

【问题讨论】:

  • firebug中记录的错误是什么
  • 感谢您的所有回答 :)

标签: javascript jquery regex validation


【解决方案1】:

首先,正则表达式不写成字符串。它们有自己的文字类型:

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

其次,每个字符类只匹配一个字符。如果没有转义,. 是通配符。此外,如果email 的任何子字符串满足该模式,test 将报告 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.

【讨论】:

    【解决方案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]+$");
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        我不确定这是不是复制粘贴错误,但是看你的函数代码,可以看到你没有关闭函数validateEmail()

        【讨论】:

        • 这仍然无济于事,因为strings 没有test 方法。
        • @m.buettner:当然你没事。正则表达式在第二位也是错误的
        • 是的。此外,由于 OP 表示在 if 声明之前运行良好,我相信缺少的 } 可能是复制粘贴错误。
        【解决方案5】:

        我认为您要么像这样缺少顶部的 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
        

        【讨论】:

        • 这仍然无济于事,因为strings 没有test 方法。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-22
        • 2013-05-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多