无法阅读财产'匹配' null

时间:2017-05-07 16:41:02

标签: javascript regex

我正在尝试匹配传入的值,并且在Javascript中只允许使用字母数字字符和null。 但是当我在控制台中匹配/执行时,它甚至会抛出错误。

var code = null;
if(code.match(/[-[\]{}()*+?._\\^$|#]+/) || !code.match(/^[a-z0-9\0]+/){
     console.log('It works');
}

错误就在这里。   无法阅读属性'匹配'为null

2 个答案:

答案 0 :(得分:2)

您无法在null上调用方法,因为错误消息告诉您。

exec是正则表达式对象的方法。您在正则表达式上调用它,并传入一个字符串以使表达式运行。例如,result = /[-[\]{}()*+?._\\^$|#]+/.exec(someString)

match有点反过来:你在一个字符串上调用它并传入一个正则表达式,然后再次对该字符串运行正则表达式(稍有不同,请参阅链接了解详细信息):实例:result = someString.match(/[-[\]{}()*+?._\\^$|#]+/)

但请注意,在这两种情况下,我们都有两件事:正则表达式和字符串。 null既不是那些东西。您问题代码中缺少的是一个可以使用的字符串。

答案 1 :(得分:0)

使用typeof代码检测代码是否为null和字符串,并使用\ w +匹配字母数字。

var code = ... // null or string;
if (((typeof code) === 'string')) && code.match(/\w+/)) {
    // TODO: it works
}