2014-07-15 24 views
0

沒有人知道爲什麼我總是在執行JS方法時在Firefox控制檯中得到「TypeError:str.match(...)爲null」?總是得到「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); 
} 

感謝您的幫助

+0

字符類不是用逗號分隔的...... –

+1

此外,'patt1'不應該在引號中。 – Andy

回答

3

除了你無效的字符類語法(應該是[A-Za-z0-9:.()-]),那麼主要的問題是你正在創建一個字符串,而不是一個正則表達式文字。從中刪除引號。

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

由於它不區分大小寫,它只需要是/ @ media [A-Z0-9 :. () - ] * width:/ gi'或'/ @ media [a-z0-9 :. () - ] * width:/ gi' – RevanProdigalKnight

+0

@RevanProdigalKnight Correctamundo!一個我從未使用過的詞,可能永遠不會再使用... –

-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]+/而不是一個字符串。

+0

會喜歡我爲什麼給一個downvote的原因。謝謝。 – Fallenreaper

相關問題