首页 > 解决方案 > 正则表达式范围,包括 -100 和 100 之间的负十进制数,包括但不要求 2 个小数点

问题描述

我需要一些帮助来提出一个允许 -100 和 100 之间的十进制值的正则表达式。它最多可以有两位小数,但不应该要求小数。

我有这个基于这个问题的 0 - 100: Regex range between 0 and 100 include two decimal

^(?:100(?:\.00?)?|\d?\d(?:\.\d\d?)?)$

标签: regexformsvalidation

解决方案


你可以试试这个表达式:

/^-?(?:100|[0-9]{1,2})(?:\.[0-9]{1,2})?$/gm
  • ^在行首断言位置
  • -?从字面上匹配字符-(区分大小写)
    • ?量词 - 匹配 0 和 1 次,尽可能多次,根据需要回馈(贪婪)(否定是可选的
  • 非捕获组(?:100|[0-9]{1,2})百名以下
    • 第一个替代字面100匹配字符100(区分大小写)
    • 2nd Alternative[0-9]{1,2}匹配列表中存在的单个字符[0-9]
    • {1,2}量词 - 匹配 1 到 2 次,尽可能多次,根据需要回馈(贪婪)
    • 0-90 到 9 之间的单个字符(区分大小写)
  • 非捕获组(?:\.[0-9]{1,2})?不需要小数
    • ?量词 - 匹配 0 到 1 次,尽可能多次,根据需要回馈(贪婪)
    • \.从字面上匹配字符.(区分大小写)
    • [0-9]{1,2}匹配列表中存在的单个字符[0-9]
    • {1,2}量词 - 匹配 1 到 2 次,尽可能多次,根据需要回馈(贪婪)
    • 0-90 到 9 之间的单个字符(区分大小写)
  • $在行尾断言位置

全局模式修饰符/标志:

  • g: 全球的。所有比赛(第一场比赛后不返回)
  • m: 多行。导致 ^ 和 $ 匹配每行的开始/结束(不仅是字符串的开始/结束)

推荐阅读