好吧,我试着在标题中总结一下。
我需要一个reg ex来匹配数字和逗号,但不需要以0开头的数字,除非它是0,数字
我的用户在字段中输入小时数,因此他们必须能够输入0.3小时,但不允许他们写入002或09.
我有这个注册表
^[0-9]*\,?[0-9]+$
除非0后面跟一个逗号
,否则如何将其扩展为不允许以0开头答案 0 :(得分:2)
这个应该符合您的需求:
^0,\d*[1-9]|[1-9]\d*$
0,\d*[1-9]
:a 0,后跟逗号,后跟0或更多位,后跟1到9之间的一位数[1-9]\d*
:1到9之间的数字,后跟零或更多数字匹配
不匹配:
答案 1 :(得分:2)
另一个:)
^(0|[1-9]\d*(|,\d+)|0,\d+)$
答案 2 :(得分:2)
您不需要强制所有内容都使用单个正则表达式来执行此操作。
如果您使用多个正则表达式将会更清楚,每个正则表达式都会进行特定检查。
if ( /^[0-9]+,[0-9]+$/ || /^[1-9][0-9]*$/ )
我们在这里进行两项不同的检查。 “要么这个匹配,要么另一个匹配”,然后你不必将两个条件都塞进一个正则表达式。
让我们使用您的宿主语言的表达形式,而不是试图将逻辑塞入正则表达式。