【问题标题】:Error with parser recognising regex解析器识别正则表达式时出错
【发布时间】:2014-06-17 11:27:01
【问题描述】:

我正在尝试向我的应用程序添加一些 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" );
}

我收到了这个错误:

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

【问题讨论】:

  • 你缺少引号 var reg = @"YOUR REGEX HERE";
  • @isi,它的 JavaScript,而不是 C#。所以 /.../ 文字很好(在它前面放置 @ 会导致更多错误):问题很可能如 M42 所示。
  • ok :) 那就不好意思了
  • 我不明白为什么服务器会为您的 JavaScript 代码提供错误? JavaScript 不应该在客户端浏览器上运行吗?

标签: c# javascript regex validation email-validation


【解决方案1】:

转义字符类中的]

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 __^

【讨论】:

  • 我认为转义只是另一个问题,但第一个问题是根据正则表达式字符串缺少引号,或者“/”是 C# 中表示正则表达式的语法简写?
  • @isi:不适用于 javascript。
  • 尝试在您提到的地方添加转义符但得到相同的错误?
  • @M42 还有其他想法吗?
  • 谢谢,虽然我对需要转义的内容有点困惑,但您能否在示例中添加转义字符?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多