2011-03-22 48 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