可以以 0 开头的数字的正则表达式
Regex for a number which can starts with 0
我将此正则表达式用于我的字段:
/^([1-9]([0-9]){0,3}?)((\.|\,)\d{1,2})?$/;
我想要做的是允许用户输入 0 作为数字的开头,但在这种情况下,他必须输入至少第二个不同于 0 的数字,同样的规则适用于第三个和第四位数字。
示例:
- 01 -> 有效
- 00 -> 无效
- 0 -> 无效
- 1 -> 有效
简而言之,零值是不允许的。我如何使用 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)
- 字符串开头没有两个 0
s
(?!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);
}
我将此正则表达式用于我的字段:
/^([1-9]([0-9]){0,3}?)((\.|\,)\d{1,2})?$/;
我想要做的是允许用户输入 0 作为数字的开头,但在这种情况下,他必须输入至少第二个不同于 0 的数字,同样的规则适用于第三个和第四位数字。
示例:
- 01 -> 有效
- 00 -> 无效
- 0 -> 无效
- 1 -> 有效
简而言之,零值是不允许的。我如何使用 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)
- 字符串开头没有两个0
s(?!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);
}