我正在尝试获取正则表达式,该正则表达式可以验证0到20之间的可接受数字,这些数字后可以跟可选的小数点,再跟一个或两个数字。不允许使用特殊字符 它应该被接受:
1 true
2 true
2.5 true
.
.
15,25 true
16.369 false
16++++ false
16,32-+* false
20 true
我尝试过,但是可以接受16,25 ++++
var regex = /^(?:1?\d(?:\.\d{1,2})?|20(?:\.0?0?)?)$/
答案 0 :(得分:1)
您可以使用:
^(?:(?:\d|1[0-9])(?:[,.]\d{1,2})?|20(?:[,.]0{1,2})?)$
说明
^
字符串的开头(?:
非捕获组
(?:\d|1[0-9])
匹配0-9或10-19 (?:[,.]\d{1,2})?
匹配可选部分以匹配十进制和1-2位数字|
或20(?:[,.]0{1,2})?
将20与可选部分匹配以匹配十进制和1-2个零点)
关闭非捕获组$
字符串结尾