gpt4 book ai didi

javascript - AngularJS ng-pattern 在电话号码的正则表达式上抛出错误

转载 作者:行者123 更新时间:2023-11-30 12:34:29 24 4
gpt4 key购买 nike

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

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

但是 AngularJS 抛出这个错误:

Syntax Error: Token '?' not a primary expression at column 3 of the expression [^(?([0-9]{3}))?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$] starting at [?([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})$

关于javascript - AngularJS ng-pattern 在电话号码的正则表达式上抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26536793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com