繁体   English   中英

AngularJS ng-pattern在正则表达式中引发电话号码错误

[英]AngularJS ng-pattern throws error on regex for phone number

我在文本字段上使用ng-pattern来验证加拿大电话号码:

^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$

但是AngularJS抛出了这个错误:

语法错误:令牌'?' 不是表达式[^(?([0-9] {3}))的第3列的主要表达式?[ - 。 ]([0-9] {3})[? - 。 ]?([0-9] {4})$]从[?([0-9] {3})开始?[ - 。 ]([0-9] {3})[? - 。 ]([0-9] {4})$]。

我测试了它,并在像Rubular这样的几个不同的在线正则表达式编辑器中尝试过它,看起来非常有效。 我正在动态创建字段,因此ng-pattern在ngRepeat中的指令中设置如下。

ng-pattern="{{field.format}}"

如果我将其更改为硬编码的正则表达式,它不会抛出任何错误:

ng-pattern="/^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/"

但后来我把它改成了一些非常简单的东西:

^[0-9]{3}$

这样可行,所以无法动态创建字段并仅与正则表达式相关。

你好。 第一个? 没有任何可量化的东西。 去掉它。 这意味着您还应该删除生成的额外括号。

^([0-9]{3})?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$

埃德。 使用区域代码的可选括号(实际括号)(未经测试):

^(\\(?([0-9]{3})\\)?)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM