正则表达式匹配数字和逗号,但不是数字从0开始,除非它是0,

时间:2012-12-20 17:01:28

标签: regex

好吧,我试着在标题中总结一下。

我需要一个reg ex来匹配数字和逗号,但不需要以0开头的数字,除非它是0,数字

我的用户在字段中输入小时数,因此他们必须能够输入0.3小时,但不允许他们写入002或09.

我有这个注册表

^[0-9]*\,?[0-9]+$

除非0后面跟一个逗号

,否则如何将其扩展为不允许以0开头

3 个答案:

答案 0 :(得分:2)

这个应该符合您的需求:

^0,\d*[1-9]|[1-9]\d*$
  • 0,\d*[1-9]:a 0,后跟逗号,后跟0或更多位,后跟1到9之间的一位数
  • [1-9]\d*:1到9之间的数字,后跟零或更多数字

匹配

  • 0,3
  • 0,03
  • 3
  • 30

不匹配:

  • 0
  • 0,0
  • 0,30
  • 03

答案 1 :(得分:2)

另一个:)

^(0|[1-9]\d*(|,\d+)|0,\d+)$

答案 2 :(得分:2)

您不需要强制所有内容都使用单个正则表达式来执行此操作。

如果您使用多个正则表达式将会更清楚,每个正则表达式都会进行特定检查。

if ( /^[0-9]+,[0-9]+$/ || /^[1-9][0-9]*$/ )

我们在这里进行两项不同的检查。 “要么这个匹配,要么另一个匹配”,然后你不必将两个条件都塞进一个正则表达式。

让我们使用您的宿主语言的表达形式,而不是试图将逻辑塞入正则表达式。