我必须验证输入字段,但是当用户在输入中复制和粘贴某些东西时我遇到了问题
这是我的代码
<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
.....等
但是当用户从不同的页面复制并粘贴相同的内容时,根据浏览器到浏览器,输入看起来像(158|158)
,但模式无效,因为复制时,字符之间有隐藏的选项卡或空格。例如
((tab)(tab)158(tab)|(tab)(tab)-158(tab)
但在输入文本中看起来像(158|-158
,因此对于用户来说是有效的输入
输入有效(因为在calculate()
函数中我清空了空格和制表符的输入)但是对于该模式无效且角度没有执行calculate()
函数。
这是一个复制和粘贴文本,其中包含隐藏的标签
(-91|-18)
谢谢
编辑
这是字符串
的var_dumpstring '(â€-â€91‬‬|â€-â€18‬‬)' (length=33)
它包含特殊字符!没有标签或空格!
也许我必须找到一个不同的解决方案来验证输入...
答案 0 :(得分:0)
$scope.coordsPattern = /^\s*?\(?\s*?\-?\s*?\d{1,3}\s*?\|\s*?\-?\s*?\d{1,3}\s*?\)?\s*?$/;
即使插入了空白字符,这也应与预期输入匹配。
答案 1 :(得分:0)
确保浏览器和编辑器使用UTF-8编码而不是 ISO-8859-1 / Windows-1252。