我有接受 1 到 100 之间数字的正则表达式。但它接受特殊字符 '%'
这是我正在使用的正则表达式
^(0*100{1,1}\\.?((?<=\\.)0*)?%?$)|(^0*\\d{0,2}\\.?((?<=\\.)\\d*)?%?)$'
我不想接受 % 谁能帮我解决这个问题。
我有接受 1 到 100 之间数字的正则表达式。但它接受特殊字符 '%'
这是我正在使用的正则表达式
^(0*100{1,1}\\.?((?<=\\.)0*)?%?$)|(^0*\\d{0,2}\\.?((?<=\\.)\\d*)?%?)$'
我不想接受 % 谁能帮我解决这个问题。
删除所有%?
. 这表明正则表达式应该匹配零个或一个%
字符。
我会采取多步骤的方法。不会尝试仅使用正则表达式来解决此问题。维护是一场噩梦。
我的解决方案:-
使用简单的正则表达式来确定该值是否为三位或更少位数的整数。
/^\d{1,3}$/
如果有效,则转换为一个数字。
检查数字是否为<= 100
和>= 0
。
我相信这个正则表达式也可以工作,并且比你提到的更简单。
(100)|(0*\d{1,2})
这也将处理前导零。
这仅匹配 1 到 100(含):
/\b((100)|[1-9]\d?)\b/
\b
匹配单词边界。这意味着类似 JavaScript: 的东西
/((100)|[1-9]\d?)/.test("I have 1000 dollars");
会返回true
. 相反,使用边界一词将返回false
。
这允许从 1 到 100 的数字:
100|[1-9]?\d
^(100|[1-9][0-9]?)$ 这个正则表达式匹配 1 到 100,100 正好匹配 100 或 [1-9] 匹配 1 到 9 [0-9] 范围内的字符匹配 0 到 9 范围内的字符?匹配前一个标记的 0 和 1
并供您参考在此处验证正则表达式组合https://regexr.com/
如果您的匹配项包含小数点且没有前导零,我认为这是最佳选择
^(?:[0-9]|[1-9][0-9](\.\d{1,2})?|100|10.00)$
22 # returns True
100 # returns True
22.35 # returns True
20.23 # returns True
100.1 # returns false out bound/range
02 # returns False leading zero
69.235 # returns False exceeds 2 decimal places
001 # returns False has 2 leading zeroes
它将小数位数限制为两位小数检查测试组合https://regex101.com/r/Tpe9Ia/10 1