0

我必须验证输入字段,但是当用户在输入中复制和粘贴某些内容时出现问题

这是我的代码

<input type="text" ng-change="calculate()" ng-pattern="coordsPattern" ng-model="from" class="input-coords" placeholder="(x|y)">

coordsPattern 是:

$scope.coordsPattern = /^\(?\-?\d{1,3}\|\-?\d{1,3}\)?$/;

输入可以采取

(158|158)  
-158|158  
(-158|158  

.....ETC

但是当用户从不同的页面复制并粘贴相同的内容时,取决于浏览器到浏览器,输入看起来像(158|158)但模式无效,因为复制时字符之间存在隐藏的选项卡或空格。例如

((tab)(tab)158(tab)|(tab)(tab)-158(tab)

但是在输入文本中(158|-158,对于用户来说
,输入是有效的输入是有效的(因为在calculate()函数中我从空格和制表符中清除了输入)但是对于该模式无效并且角度不执行该calculate()函数。

这是包含隐藏标签的复制粘贴文本

(‭-‭91‬‬|‭-‭18‬‬)

谢谢

编辑

这是字符串的 var_dump

string '(‭-‭91‬‬|‭-‭18‬‬)' (length=33)

它包含特殊字符!既不是制表符也不是空格!
也许我必须找到一个不同的解决方案来验证输入......

4

1 回答 1

0
$scope.coordsPattern = /^\s*?\(?\s*?\-?\s*?\d{1,3}\s*?\|\s*?\-?\s*?\d{1,3}\s*?\)?\s*?$/;

即使插入了空白字符,这也应该与预期的输入相匹配。

于 2014-04-03T10:40:40.787 回答