Javascript Angularjs验证不适用于复制粘贴

Javascript Angularjs验证不适用于复制粘贴,javascript,angularjs,regex,angular-material,Javascript,Angularjs,Regex,Angular Material,我正在尝试使用ng模式和tel Mask指令创建一个基于美国的电话号码验证 如果我做简单的复制粘贴1234567890,效果很好,但是 复制粘贴有效电话号码并将其删除时, 然后再次复制粘贴,然后将其指定为错误 下面是正在工作的JSFIDLE:在JS代码中,从数字中删除连字符,模式要求连字符存在。使它们成为可选的,并使用 ng-pattern="/^[0-9]{3}-?[0-9]{3}-?[0-9]{4,5}$/" ^ ^ 看 显示

我正在尝试使用ng模式和tel Mask指令创建一个基于美国的电话号码验证

如果我做简单的复制粘贴
1234567890
,效果很好,但是

复制粘贴有效电话号码并将其删除时, 然后再次复制粘贴,然后将其指定为错误


下面是正在工作的JSFIDLE:

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

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


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

删除连字符,没有连字符的模式不支持值。让它们成为可选的,谢谢@Wiktor Stribiżew,它可以像预期的那样工作。首先感谢上面的内容。。但是,当我输入有效的电话号码并在框外单击(模糊事件),然后再次尝试输入额外的内容(字母或无数字字母)时,如果出现错误,您能否提出解决方案。抱歉,我尝试检查了该部分,但它似乎与字符串传递到正则表达式的方式和时间有关,这已经使问题变得过于宽泛。请记住,删除连字符后,它们在模式中必须是可选的。