【问题标题】:REGEX percentage 2 decimal with + and minus valueREGEX 百分比 2 十进制,带 + 和减值
【发布时间】:2016-06-06 10:50:42
【问题描述】:

这是我的正则表达式,用于检查 2 位小数到 100 的百分比

^-?(100([.]0{1,2})?)$|(^\d{1,2}([.]\d{1,2})?)

但仅在99.16 中工作,而不像-99.16 那样工作

如何允许也负百分比?

【问题讨论】:

标签: java regex


【解决方案1】:

您有 两个 选择:

  • 100% 的特殊情况
  • 0..99 百分比的标准情况

两个选项都可以有减号 (-):

  (^-?(100([.]0{1,2})?)$)|(^-?[0-9]{1,2}([.][0-9]{1,2})?$)

作为备注,您可能希望 [0-9] 在匹配 digits 时不要将任何字符视为数字 '\d',其中包括波斯数字 ۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷

【讨论】:

  • @Xufox:很好的发现!我不应该复制 + 粘贴 原始正则表达式
  • 感谢您的快速回复
  • 附注:有没有办法让\d 匹配波斯数字?
  • @LinusKleen,实际上恰恰相反。默认情况下,在 Java 中,字符类 \d 不会匹配非 ASCII 数字(例如 ۱;U+06F1),除非您使用 UNICODE_CHARACTER_CLASS flag"\u06F1".matches("\\d") == false"\u06F1".matches("(?U)\\d") == true
【解决方案2】:

你刚刚错过了 ^-?在第二个选项中

^-?(100([.]0{1,2})?)$|(^-?\d{1,2}([.]\d{1,2})?)

【讨论】:

  • 打错字了,其实没关系,都是一样的,我删掉
  • 感谢您的快速回复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
  • 2022-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多