更容易的方法使RegExp.test()对于空值返回false?
let regex = /[a-z]+/;
regex.test('a'); // true
regex.test(''); // false
regex.test(null); // true
regex.test(undefined); // true
那么基于这个链接,它是Ecmascript中的一个错误 - /S/.test(null)是否返回true?,它看起来像空值被强制为一个字符串'null'。 WTF? 这是为什么这样设计的? 我也找不到有关此行为的任何文档。 有没有办法返回false
的空/未定义的值(没有检查“空”硬编码等)?
RegExp.test()
的参数预计是一个字符串。 如果不是,则将其转换为字符串:
var regex = /[object Object]/;
console.log(regex.test({})); // true
如果你正在测试一个变量,你可以这样做:
regex.test(var || '')
所以如果它没有设置,它将默认为空字符串。
您可以覆盖测试方法。
old = regex.test
regex.test = function(str){
str = str? str: "";
return old.call(this, str);
}
regex.test(null); // false
一种方法是让你期望的输出是先检查值,取而代之的是""
中的情况下,空字符串null
或undefined
let regex = /[a-z]+/;
function test (inp){
return regex.test(inp? inp: '');
}
test(null); // false
test(undefined); // false
链接地址: http://www.djcxy.com/p/94981.html
上一篇: Easier way to have RegExp.test() return false for null values?