正则表达式验证 - Javascript中的初始化错误

时间:2015-04-17 07:23:53

标签: javascript regex

我正在尝试在Javascript中编写一个函数来验证电子邮件地址。这是功能。

function validateEmailAddress() {   
    var patternForEmail = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$/;
    var regexPatternForEmail = new RegExp(patternForEmail, 'i');

    // Email address and the Confirm Email address values should match
    if ($('#txtEmail').val() != $('#txtConfirmEmail').val()) {
        $('#dvErrorMsg').html("Email addresses do not match.");
        $('#txtEmail').focus();
        return false;
    }
    else if (!regexPatternForEmail.test($('#txtEmail').val())) {
        $('#dvErrorMsg').html("Please enter a valid email address.");
        $('#txtEmail').focus();
        return false;
    }
    else
        return true;
}

这里的问题是我在RegExp对象实例化过程中遇到错误,“正则表达式中的语法错误”。

我在IE 11中尝试过调试,这就是我发现错误的地方。 有人可以建议我解决这个问题。

调试时拍摄的屏幕截图: enter image description here

2 个答案:

答案 0 :(得分:2)

您不需要使用RegExp构造函数创建另一个正则表达式变量。只需使用以下内容。

var patternForEmail = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$/i;
最后一个不区分大小写的修饰符

i,它有助于进行不区分大小写的匹配。

示例:

> var patternForEmail = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$/i;
> patternForEmail.test('foo@bar.com')
true
> patternForEmail.test('@foo@bar.com')
false

答案 1 :(得分:0)

在大多数情况下,由于浏览器兼容性而发生此类错误,因此我们始终需要使用可在所有浏览器中运行的代码。我希望以下更改对您有所帮助。

var patternForEmail = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

然后你可以使用

匹配表达式
if (patternForEmail.test($('#txtEmail').val())) {
            $('#dvErrorMsg').html("Please enter a valid email address.");
            $('#txtEmail').focus();
            return false;
}

或者您也可以使用 match()功能,这对所有浏览器都会更灵活。

var email = $('#txtEmail').val();

if (!email.match(/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i)) {
        $('#dvErrorMsg').html("Please enter a valid email address.");
        $('#txtEmail').focus();
        return false;
}