使用.match()中的一个点

Sin*_*dar 0 javascript regex jquery match

我有一点问题但很奇怪.

所以基本上我分析了一个由字符串表示的URL.我唯一想检查的是这个URL是否包含'.pdf'

但问题是,如果URL内容只是'pdf',它也会进入IF条件.所以我真的不明白,是'.' 一个特殊的特征?

if (URL.match(".pdf")) 
Run Code Online (Sandbox Code Playgroud)

jAn*_*ndy 7

是的.

你需要用反斜杠来逃避它.

if (URL.match(/\.pdf$/i)) 
Run Code Online (Sandbox Code Playgroud)

$意味着URL必须以该模式结束


更新:

我不知道你在哪个上下文中运行该代码,但是使用jQuery你也可以创建一个符合这样要求的选择器:

var $pdf_only = $('a[href$=\\.pdf]');
Run Code Online (Sandbox Code Playgroud)

这将查询href结束的所有锚点.pdf

  • 通过字符串而不是正则表达式时,Afaik双反斜杠来逃避反斜杠. (2认同)

RoT*_*oRa 5

是.match()采用正则表达式作为其参数.你应该在这里使用正则表达式文字并转义.:

if (URL.match(/\.pdf/)) 
Run Code Online (Sandbox Code Playgroud)

或者你使用一个字符串,你需要双重转义它,因为反斜杠是字符串中的一个特殊字符:

if (URL.match("\\.pdf")) 
Run Code Online (Sandbox Code Playgroud)

.正式的正则表达式意味着"任何角色".