0

好吧,我试图在标题中总结它。

我需要一个正则表达式来匹配数字和逗号,但不是以 0 开头的数字,除非它是 0,number

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

我有这个注册前

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

如何将其扩展为不允许以 0 开头,除非 0 后跟逗号

4

3 回答 3

2

这应该适合您的需求:

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

火柴:

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

不匹配:

  • 0
  • 0,0
  • 0,30
  • 03
于 2012-12-20T17:07:56.390 回答
2

另一个 :)

^(0|[1-9]\d*(|,\d+)|0,\d+)$
于 2012-12-20T17:14:21.570 回答
2

您无需将所有内容强制转换为单个正则表达式即可执行此操作。

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

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

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

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

于 2012-12-20T20:55:04.130 回答