正则表达式接受0到20之间的数字,后接可选的十进制数字

时间:2019-05-18 12:18:52

标签: regex

我正在尝试获取正则表达式,该正则表达式可以验证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?)?)$/

1 个答案:

答案 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个零点
  • )关闭非捕获组
  • $字符串结尾

Regex demo