javascript - RegEx只匹配一些数字?

时间:2014-08-21 00:23:01

标签: javascript regex

这是我的代码:

var reIsNumeric = /[0-9]/g;
console.log(reIsNumeric.test(1));  // true
console.log(reIsNumeric.test(2));  // false
console.log(reIsNumeric.test(3));  // true
console.log(reIsNumeric.test(4));  // false

有谁知道为什么只有奇数会返回true?我会失去理智吗?

1 个答案:

答案 0 :(得分:2)

取出g

var reIsNumeric = /[0-9]/;
console.log(reIsNumeric.test(1));  // true
console.log(reIsNumeric.test(2));  // true
console.log(reIsNumeric.test(3));  // true
console.log(reIsNumeric.test(4));  // true

http://jsfiddle.net/0tap3nfx/1/

原因是因为g修饰符用于执行全局匹配(找到所有匹配而不是在第一次匹配后停止)。

所以基本上返回true的值并不是你所期望的,但是和你的相同的正则表达式按预期工作,如下所示。

var reIsNumeric = /[0-9]/g;
console.log(reIsNumeric.test(1));  // true
console.log(reIsNumeric.test(22));  // true
console.log(reIsNumeric.test(333));  // true
console.log(reIsNumeric.test(4444));  // true

http://jsfiddle.net/0tap3nfx/2/