angular中的正则表达式给出了无法匹配的括号错误

时间:2014-12-02 05:23:33

标签: regex angularjs

我正在尝试使用来自http://www.regular-expressions.info/email.html的正则表达式模式验证角度的电子邮件,如下所示:

input.form-control(type="email", placeholder="Email", name="email", ng-model='doctor.email', ng-pattern='[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?')

给出了这个错误:

    Error: /home/pravin/zyoba/nimbus/nimbus-web/views/addDoc.jade:50
        48|               .form-group.clearfix
        49|                 .col-xs-7
      > 50|                   input.form-control(type="email", placeholder="Email", name="email", ng-model='doctor.email', ng-pattern='[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?')
        51|                 span.font-red.font-23 * 
        52|                 span.icon-form-cross(ng-show="docRegForm.email.$dirty &&  validation.test(docRegForm.email.$error)")
        53| 

    start character ( does not match end character ]
        at Object.Lexer.bracketExpression (/home/pravin/zyoba/nimbus/nimbus-web/node_modules/jade/lib/lexer.js:130:46)
        at Object.Lexer.attrs (/home/pravin/zyoba/nimbus/nimbus-web/node_modules/jade/lib/lexer.js:581:24)
        at Object.Lexer.next (/home/pravin/zyoba/nimbus/nimbus-web/node_modules/jade/lib/lexer.js:867:15)
        at Object.Lexer.lookahead (/home/pravin/zyoba/nimbus/nimbus-web/node_modules/jade/lib/lexer.js:113:46)
        at Parser.lookahead (/home/pravin/zyoba/nimbus/nimbus-web/node_modules/jade/lib/parser.js:100:23)
        at Parser.peek (/home/pravin/zyoba/nimbus/nimbus-web/node_modules/jade/lib/parser.js:77:17)
        at Parser.tag (/home/pravin/zyoba/nimbus/nimbus-web/node_modules/jade/lib/parser.js:733:22)
        at Parser.parseTag (/home/pravin/zyoba/nimbus/nimbus-web/node_modules/jade/lib/parser.js:719:17)
        at Parser.parseExpr (/home/pravin/zyoba/nimbus/nimbus-web/node_modules/jade/lib/parser.js:188:21)
        at Parser.block (/home/pravin/zyoba/nimbus/nimbus-web/node_modules/jade/lib/parser.js:689:25)

我是正则表达式noob,并且不知道复杂的正则表达式。请有人帮我调试错误。

2 个答案:

答案 0 :(得分:1)

您的问题很可能是在正则表达式中有一个引号('),以及分隔正则表达式字符串的开头和结尾。

你需要以某种方式逃避内部引用。

答案 1 :(得分:1)

在正则表达式中,您使用的是单引号字符,该字符也用作表达式的引号字符。你需要逃脱它。请尝试以下方法:

ng-pattern='[a-z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?')