我正在尝试匹配传入的值,并且在Javascript中只允许使用字母数字字符和null。 但是当我在控制台中匹配/执行时,它甚至会抛出错误。
var code = null;
if(code.match(/[-[\]{}()*+?._\\^$|#]+/) || !code.match(/^[a-z0-9\0]+/){
console.log('It works');
}
错误就在这里。 无法阅读属性'匹配'为null
答案 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
}