2017-10-17 98 views
1

我试图创建一个美国的电话号码验证###-###-####,采用NG-模式和电话面膜指令..Angularjs验证不工作的复制粘贴

如果我做简单的复制粘贴1234567890,它工作正常,但和

当复制粘贴一个有效的电话号码,并删除它, 并再次复制粘贴然后给出错误..

这里是工作的jsfiddle:https://jsfiddle.net/9xrx87mw/1/

+1

您删除连字符,并且该模式不支持没有它们的值。使它们成为可选项,['ng-pattern =“/^[0-9] {3} - ?[0-9] {3} - ?[0-9] {4,5} $ /”'](https ://jsfiddle.net/9xrx87mw/2/) –

+0

感谢@WiktorStribiżew,它按预期工作 –

回答

1

在JS代码中,您从数字中删除连字符,并且模式要求连字符存在。让它们可选并使用

ng-pattern="/^[0-9]{3}-?[0-9]{3}-?[0-9]{4,5}$/" 
        ^  ^

查看updated demo

显示的值将在稍后重新生成,因此允许匹配1或0个量化子模式的量化符将按预期工作。

+0

首先感谢以上..但是,当我输入有效的电话号码并点击框外(模糊事件),并再次尝试输入一些额外的(字母或无数字字母)它给错误,你能提出一个解决方案。 –

+0

对不起,我试图检查该部分,但它似乎与字符串如何以及何时传递给正则表达式有关,并且已经使问题太宽泛。请记住,一旦你删除了连字符,它们在模式中必须是可选的。 –