正则表达式允许点和逗号

时间:2016-07-18 14:42:50

标签: regex

我有这个表达

^(?!0*(\.0+)?$)(\d+|\d*\.\d+)$

它工作正常,除了我想要它除了逗号作为分隔符。使用这种模式,1,5或123是错误的。应该是真的。

具体地,

0 =假

0.0 =假

null = false

。 = false

,= false

0.123 = true

0,123 = true

.123 = true

,123 = true

123.123 = true

123,123 = true

1 个答案:

答案 0 :(得分:2)

我认为你在寻找

^(?!0*[.,]?0+$)\d*[.,]?\d+$

请参阅regex demo

模式详情

  • ^ - 字符串开头
  • (?!0*[.,]?0+$) - 如果整个字符串等于0+零,后跟1或0个逗号或点,后跟一个或多个零(如果值为{{1},则会使匹配失败的负前瞻}},000000,000,或.000等。)
  • ,000 - 零个或多个数字
  • \d* - 可选的逗号或点
  • [.,]? - 一位或多位
  • \d+ - 字符串结束。

请注意,在使用带有$方法的模式时,您不需要^$,但最好将它们保留在模式中以提高可读性,进一步测试。