2011-03-22 46 views
0

嗯,我有一個小問題,但真的很奇怪。在.match()使用一個點

所以基本上我分析了一個字符串表示的URL。我唯一想檢查的是這個URL是否包含'.pdf'

但問題是,如果URL內容只是'pdf',它也會進入IF條件。所以我不太明白,是'。'一個特殊的caracter?

if (URL.match(".pdf")) 

回答

7

是的。

您需要使用反斜槓進行轉義。

if (URL.match(/\.pdf$/i)) 

$意味着該URL必須與該模式


更新結束:

我不知道在哪個範圍內運行的代碼,但使用jQuery你也可以創建一個選擇器,它符合如下要求:

var $pdf_only = $('a[href$=\\.pdf]'); 

這將查詢所有錨,這HREF.pdf

+0

所以....如果點是一個特殊字符,這是什麼意思? – Thilo 2011-03-22 11:01:07

+0

我已經嘗試過'\ .pdf',但它沒有改變這個問題。仍然輸入IF條件 – Sindar 2011-03-22 11:01:17

+2

Afaik雙反斜槓在傳遞字符串而不是正則表達式時轉義反斜槓。 – BGerrissen 2011-03-22 11:01:33

5

是結束。 match()需要正則表達式作爲它的參數。您應該用文字在這裏正則表達式和逃避.

if (URL.match(/\.pdf/)) 

或者你使用一個字符串,你需要加倍逃避它,因爲反斜槓是一個特殊字符在字符串:

if (URL.match("\\.pdf")) 

正則表達式中未轉義的.表示「任何字符」。

2

使用正則表達式文字並轉義點。

if (url.match(/\.pdf$/) { 
    // shazam 
} 

或者作爲字符串

if (url.match("\\.pdf$") { 
    // shazam 
} 
+0

RoToRa擊敗了我;) – BGerrissen 2011-03-22 11:03:19

+0

對不起^^'Thansk爲你提供幫助;) – Sindar 2011-03-22 11:04:59