可以以 0 开头的数字的正则表达式

Regex for a number which can starts with 0

我将此正则表达式用于我的字段:

/^([1-9]([0-9]){0,3}?)((\.|\,)\d{1,2})?$/;

我想要做的是允许用户输入 0 作为数字的开头,但在这种情况下,他必须输入至少第二个不同于 0 的数字,同样的规则适用于第三个和第四位数字。

示例:

简而言之,零值是不允许的。我如何使用 Regex 执行此操作?或者如果我只用 javascript 脚本来做会更好吗?

尝试结合 JS 和 RegEx:

if (parseInt(value) != 0 && value.test(/\d+([,.]\d{1,2})?/)) {
    //valid
}

如果您只想匹配小数分隔符前部分有 1 到 4 位数字,小数点分隔符后最多有 2 位数字的数字(我从您使用的正则表达式中推断出来) 不以 00 开头(该要求来自您的口头解释),使用

/^(?!00)(?!0+(?:[.,]0+)?$)\d{1,~4}(?:[.,]\d{1,2})?$/

参见regex demo

详情

  • ^- 字符串开头
  • (?!00) - 字符串开头没有两个 0s
  • (?!0+(?:[.,]0+)?$) - 如果有一个或多个 0 后跟可选的 ., 序列,则匹配失败的否定前瞻一个或多个零直到字符串结束
  • \d{1,4} - 任意 1 到 4 位数字
  • (?:[.,]\d{1,2})? - 出现 1 次或 0 次
    • [.,] - 一个 .,
    • \d{1,2} - 任意 1 位或 2 位数字
  • $ - 字符串结尾。

JS 演示:

var ss = ['1','1.1','01','01.3','023.45','0','00','0.0','0.00','0001'];
var rx = /^(?!00)(?!0+(?:[.,]0+)?$)\d{1,4}(?:[.,]\d{1,2})?$/;
for (var s of ss) {
 var result = rx.test(s);
 console.log(s, "=>", result);
}