我想在<input>
上设置一些验证,以防止用户输入错误的字符。为此我使用ng-pattern
。它目前禁止用户输入错误的字符,但我也注意到这不是预期的行为,所以我也计划创建一个指令。
我正在使用
AngularJS: 1.6.1
正则表达式应该匹配什么
以下是正则表达式字符串的要求:
注意: 'x'是可变的,可以是0到100之间的任何数字。
'x'处的数字是可变的,所以如果可以创建一个易于更改的字符串,那将是值得赞赏的!
我尝试了什么
我试过的一些正则表达式字符串:
1)^0*([0-9]\d{1,2})$
--> Does match 01 but not 1
--> Does match 32 where it shouldn't
2)^[1-9][0-9]?$|^31$
--> Does match 1 but not 01
--> Does match 32 where it shouldn't
我正在使用https://regex101.com/tests进行测试。
我的尝试中缺少什么?
答案 0 :(得分:3)
如果您的目标是匹配0到100,那么这是一种方法,基于之前的解决方案。
\b(0?[1-9]|[1-9][0-9]|100)\b
基本上,那场比赛的3个部分......
0?[1-9]
通过提及0可能存在来解决数字1到9
[1-9][0-9]
涵盖数字10到99,[1-9]代表数字
100
涵盖100
如果要求将较高的边界设置为42,则表达式的中间部分将变为[1-3][0-9]
(覆盖10到39),最后一部分变为4[0-2]
(覆盖40到42) )像这样:
\b(0?[1-9]|[1-3][0-9]|4[0-2])\b
答案 1 :(得分:1)