1

我处于无法使用 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");
    }
4

5 回答 5

3

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

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

其次,每个字符类只匹配一个字符。如果没有转义,a.是通配符。此外,test如果任何子字符串email满足该模式,将报告 true。所以你需要锚定模式。你的意思可能是这样的:

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

第三,匹配有效的电子邮件地址比您想象的要难。

于 2012-11-26T09:33:09.770 回答
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]+$");
于 2012-11-26T09:32:14.180 回答
2

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

于 2015-12-03T07:22:33.207 回答
0

我不确定这是否是复制粘贴错误,但是查看您的功能代码,可以看到您还没有关闭该功能validateEmail()

于 2012-11-26T09:33:56.660 回答
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
于 2012-11-26T09:34:10.013 回答