更简单的方法是让RegExp.test()对空值返回false
Easier way to have RegExp.test() return false for null values?
let regex = /[a-z]+/;
regex.test('a'); // true
regex.test(''); // false
regex.test(null); // true
regex.test(undefined); // true
所以基于这个链接,它是一个bug在Ecmascript -/'S/.test(null)返回真吗?,看起来null值被强制为字符串'null'。WTF ?到底为什么要这样设计?我也找不到任何关于这种行为的文档。是否有一种方法返回false
为null/未定义的值(没有硬编码检查'null'等)?
如果您正在测试一个变量,您可以这样做:
regex.test(var || '')
,以便在未设置时默认为空字符串。
RegExp.test()
的参数应该是一个字符串。如果不是,则转换为字符串:
var regex = /'[object Object']/;
console.log(regex.test({})); // true
这是JavaScript中的标准行为。例:"null".replace(null, {}) === "[object Object]"
.
Follow检查变量是否为字符串以检查参数是否为字符串:
if (typeof myVar === 'string' || myVar instanceof String) { ... }
else return false;
您可以重写测试方法。
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
相关文章:
- Model中的Typeahead返回空值以形成输入字段
- 为什么数据列表选项的id返回空值
- 从角度服务返回空值的变量
- Math.min.apply 返回 0 表示空值
- 在控制器中将 ng 模型值返回为空的指令
- 为什么 document.getElementById('files') 返回空值
- AJAX 成功:函数(响应)返回空值
- Cookie 在 IE 中始终返回空值
- 如果在过滤器中返回空值,如何显示“未找到书籍”行
- 获取返回空值的元素 { 绝对|相对|固定 }
- 隐藏字段值返回空,当我从同一页面上的 javascript 函数访问它时
- 如何以空值退出/返回类
- 文本区域的值返回为空
- j查询选择选项值返回空值
- D3 albersUsa 投影函数返回空值
- Angular2:Ajax 表单数据返回空值
- 本地存储在火狐中无法按预期工作.返回空值的对象
- 访问 iFrame 中的元素返回空值
- Json 数组返回空值
- 更简单的方法是让RegExp.test()对空值返回false