为什么这个Javascript RegExp返回true?

时间:2016-07-18 00:28:10

标签: javascript regex

我需要验证字母字符(在请求中,node.js)和我使用的是:

/[a-zA-Z]+/.test(input)

但是当传递值null时,它被验证OK(regexp返回TRUE) 例如:

/[a-zA-Z]+/.test(null) // <--- this returns true :(

有人可以解释一下吗?我需要避免空值,谢谢!

2 个答案:

答案 0 :(得分:5)

  

test()方法执行搜索常规匹配   表达式和指定的字符串。返回true或false

RegExp.prototype.test()转换传递给String

的参数

例如,/\d/.test(0)也会按预期返回true,其中0是作为参数传递的Number

答案 1 :(得分:2)

因为.test()将参数强制转换为字符串,所以您实际上是针对'null'进行测试 - 它的计算结果为true。