12

我需要使用正则表达式验证一些输入。

以下是一些示例用例和预期结果。

0001     - Matched
001      - Matched
01       - Matched
00.12312 - Matched
000.1232 - Matched
1        - Not matched
20       - Not matched
0.1      - Not matched
0.123123 - Not matched

像这样的正则表达式会是什么样子?如果第一个字符是0第二个字符,numerical[0-9]那么它是无效的。

我已经尝试过了,但它不起作用。

[0][0-9]
4

5 回答 5

14

试试这个正则表达式:

^0[0-9].*$

它将匹配0以数字开头的任何内容。

它将“匹配”您所说的“无效”。

测试代码应该更清楚:

var regExp = /^0[0-9].*$/
console.log(regExp.test("0001")); // true
console.log(regExp.test("001")); // true
console.log(regExp.test("01")); // true
console.log(regExp.test("00.12312")); // true
console.log(regExp.test("000.1232")); // true
console.log(regExp.test("1")); // false
console.log(regExp.test("20")); // false
console.log(regExp.test("0.1")); // false
console.log(regExp.test("0.123123")); // false
于 2013-06-06T22:52:42.697 回答
3

你可以使用这样的东西: -

var a = "0001";
/^[0][0-9]/.test(a)
于 2013-06-06T22:49:27.703 回答
3

您可以尝试这种模式,其想法是使用锚点^(用于开始)和$(用于结束)来限制您正在寻找的结果:

^0+\d*(?:\.\d+)?$
于 2013-06-06T22:49:35.740 回答
2
0+[1-9][0-9]*

匹配至少一个零,后跟一个非零数字,然后是任意数量的数字。与孤独的 0 不匹配。

于 2013-06-06T22:52:57.493 回答
1

这个:

/0\d+/.test("0001")
// true

如果“0”必须是第一个字符,那么:

/^0\d+/.test("0001")
于 2013-06-06T22:55:00.310 回答