Easier way to have RegExp.test() return false for null values?
1 2 3 4 5 | let regex = /[a-z]+/; regex.test('a'); // true regex.test(''); // false regex.test(null); // true regex.test(undefined); // true |
所以基于这个链接,它是ecmascript-/s/.test(空)中的bug返回真的吗?,似乎将空值强制为字符串"null"。世界跆拳道联盟?这到底是怎么设计的?我也找不到关于这种行为的任何文档。是否有返回空/未定义值的
如果要测试变量,可以执行以下操作:
1 | regex.test(var || '') |
这样,如果没有设置,它将默认为空字符串。
1 2 | var regex = /\[object Object\]/; console.log(regex.test({})); // true |
这是JavaScript中的标准行为。如
如果变量是字符串,请执行以下操作以检查参数是否是字符串:
1 2 | if (typeof myVar === 'string' || myVar instanceof String) { ... } else return false; |
。
您可以重写测试方法。
1 2 3 4 5 6 | old = regex.test regex.test = function(str){ str = str? str:""; return old.call(this, str); } regex.test(null); // false |
一种方法是获得预期的输出,首先检查该值,如果是
1 2 3 4 5 6 7 | let regex = /[a-z]+/; function test (inp){ return regex.test(inp? inp: ''); } test(null); // false test(undefined); // false |
号