【发布时间】:2014-10-14 07:24:07
【问题描述】:
问题更新:如何防止使用 AngularJS(或 jQuery)将除 char 数组中指定的字符之外的所有字符输入到输入字段中?
老问题:
我的 AngularJS 应用程序中有一个简单的 <input type="text" /> 字段,我希望用户只能在该字段中输入以下字符:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~
我知道我可以将ng-pattern="allowed" 添加到<input>,然后将$scope.allowed 设置为某个正则表达式模式,如果输入任何无效字符,这将标记输入无效,但我也想防止受限字符全部输入到字段中。
所以我的问题由两个问题组成:
- 我使用什么正则表达式模式将字符集限制为我上面发布的字符集?
- 如何防止在字段中输入非法字符? (例如,如果您输入一个小写字母,那么它将不会出现在该字段的开头,同样,如果您尝试粘贴包含任何非法字符的文本,它们将立即被删除)
【问题讨论】:
-
使用
[0-9]而不是0123456789。包含[...]+定义的字符类中的所有字符 -
@user3218114 看起来像
$scope.allowed = /[0-9][*+,-./:;]+/; -
查看demo。所有属于正则表达式模式的特殊字符都应进行转义,例如
[、]、.、*、{、}、-等。 -
你必须把破折号(
-)放在开头或结尾,否则JS会认为它是一个范围:/[-0-9*+,./:;]+/。 -
@user3218114 测试您的演示链接,这绝对看起来像我想要的模式,现在我需要弄清楚如何根据该模式限制进入。谢谢!
标签: javascript regex html angularjs