Java 正则表达式百分比2带+的十进制数;正负值

Java 正则表达式百分比2带+的十进制数;正负值,java,regex,Java,Regex,这是我的正则表达式,用于检查2位小数到100的百分比 ^-?(100([.]0{1,2})?)$|(^\d{1,2}([.]\d{1,2})?) 但是只在99.16中工作,而不像-99.16 如何允许还减去百分比?您刚刚错过了^-?在第二种选择中 ^-?(100([.]0{1,2})?)$|(^-?\d{1,2}([.]\d{1,2})?) 你有两个选择: 100先令的特例 0..99进位的标准案例 两个备选方案都可以有减号(-): 作为说明,在匹配数字时,您可能需要[0-9],而不是将

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

^-?(100([.]0{1,2})?)$|(^\d{1,2}([.]\d{1,2})?)
但是只在
99.16
中工作,而不像
-99.16


如何允许还减去百分比?

您刚刚错过了^-?在第二种选择中

^-?(100([.]0{1,2})?)$|(^-?\d{1,2}([.]\d{1,2})?)
你有两个选择:

  • 100先令的特例
  • 0..99进位的标准案例
两个备选方案都可以有减号(
-
):


作为说明,在匹配数字时,您可能需要
[0-9]
,而不是将任何字符视为数字
'\d'
,例如,其中包括波斯数字
;请注意,
-?
在表达式的第二个备选方案中,您也可以使用a:输入错误,实际上没关系,它的效果是一样的,我会删除它的,谢谢您reply@Xufox:好发现!我不应该复制并粘贴原始的正则表达式。谢谢你的快速回复。注意:有没有办法使
\d
与波斯数字不匹配?@LinusKleen,事实恰恰相反。默认情况下,在Java中,字符类
\d
将不匹配非ASCII数字(例如
U+06F1),除非您使用:
“\u06F1”。匹配(\\d”)==false
“\u06F1”。匹配((?U)\\d”)==true
  (^-?(100([.]0{1,2})?)$)|(^-?[0-9]{1,2}([.][0-9]{1,2})?$)