解析器识别正则表达式时出错

时间:2014-06-17 11:27:01

标签: c# javascript regex validation email-validation

我正在尝试向我的应用程序添加一些JavaScript验证,以检查电子邮件地址的格式是否正确。

这是我用来执行验证检查的代码:

var bValid = true;
allFields.removeClass( "ui-state-error" );
bValid = bValid && checkLength( email, "email", 6, 80 );
bValid = bValid && checkLength( password, "password", 5, 16 );
bValid = bValid && checkRegexp( name, /^[a-z]([0-9a-z_])+$/i, "Username may consist of a-z, 0-9, underscores, begin with a letter." );
// From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
var reg = /^(([^<>()[]\.,;:s@"]+(.[^<>()[]\.,;:s@"]+)*)|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;
bValid = bValid && checkRegexp(email, reg, "eg. smith@hotmail.com");
bValid = bValid && checkRegexp( password, /^([0-9a-zA-Z])+$/, "Password field only allow : a-z 0-9" );
if ( bValid ) {
    //DO ajax call
    $( this ).dialog( "close" );
}

我收到了这个错误:

enter image description here

我已经尝试了许多正则表达式的例子,但都被解析器捕获了。

2 个答案:

答案 0 :(得分:2)

转义]内部字符类:

var reg = /^(([^<>()[\]\.,;:s@"]+(.[^<>()[\]\.,;:s@"]+)*)|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;
//            here __^             here __^

不确定,但javascript可能也想要转义[

var reg = /^(([^<>()\[\]\.,;:s@"]+(.[^<>()\[\]\.,;:s@"]+)*)|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;
//           here __^              here __^

答案 1 :(得分:0)

根据Chirag64所写的内容,服务器可能会错误地运行您的JavaScript代码?第104行可能只是编译器/解释器因错误语言而出错的第一行?您的服务器期望使用哪种编程语言?

您应该尝试将问题代码复制并粘贴到单独的HTML文件中,并在将其直接加载到浏览器(无服务器)时查看它是否会在那里运行。我怀疑它会。