这是我的代码:
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
?我会失去理智吗?
答案 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