为什么我的正则表达式失败的单位数但工作为两位数?

时间:2013-12-12 15:06:49

标签: regex

我需要验证一个字符串,其中包含由破折号 (-)逗号 (,)分隔的两个数字。有效值为:

  1. 23.98-34.76 23.98,34.76
  2. 23-34 23,34
  3. 5-6 5,6
  4. 我有以下正则表达式,这是对我收到的答案here in SO的略微修改。它涵盖了上述第一和第二种情况,但不包括仅涉及一位数字的第三种情况。

    我正在使用的修改后的正则表达式字符串是:

    (\d+\.?\d+?)([-,])(\d+\.?\d+?)
    

    我的正则表达式出错了?

1 个答案:

答案 0 :(得分:3)

正确的正则表达式应该是这样的:

(\d+(\.\d+)?)[-,](\d+(\.\d+)?)

即。如果有一个句号,那么它总是后跟一个或多个数字。

否则,在正则表达式中,它也会匹配123.,789.

等字符串