始终得到" TypeError:str.match(...)为null"

时间:2014-07-15 14:38:52

标签: javascript match

有没有人知道为什么我在执行这个JS-Method时总是在Firefox控制台中得到“TypeError:str.match(...)为null”?

function checkBreakPoints() {
    var str = '@media only screen and (max-width:2em)';
    var patt1 ="/@media[A-z, 0-9, \-,: , ., ), (]*width:/gi";
    console.log(str.match(patt1).length);
}

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

除了你的无效字符类语法(应该是[A-Za-z0-9:. ()-]),那么主要问题是你正在创建一个字符串,而不是正则表达式文字。删除周围的引号。

var patt1 = /@media[A-Z0-9:. ()-]*width:/gi;

答案 1 :(得分:-1)

http://www.w3schools.com/jsref/jsref_match.asp

它说如果没有匹配,str.match(patt1)将返回null,所以你不能这样做:null.length

在执行.length

之前检查它是否为空
var a = "hi", b = "no", c = a.match(b);
console.log(c.length);

错误。

虽然OP想要创建的模式做得不正确......他想制作一个正则表达式,但我的答案对于他的基本问题是合理的,为什么字符串没有正确比较并返回null。匹配的def表示它正在寻找正则表达式,例如/[a-z]+/而不是字符串。