JS RegEx用于除PDF之外的所有文件链接

时间:2013-06-04 11:30:19

标签: javascript regex

我正在尝试匹配HTML文档中包含指向特定文件夹的链接的所有href属性,这些属性不是PDF。我无法让它匹配,我有一个获得所有PDF:

var regexPDF = new RegExp('href=[\'|"](assets/.*?\.pdf)?[\'|"]','gi');

但我排除PDF的尝试并没有让我走得太远。有没有办法做我正在做的事情,或者我更好地匹配所有文件然后使用条件语句检查它是否是PDF?的Ta!

达伦

2 个答案:

答案 0 :(得分:0)

您可以尝试在最后4个字符前使用否定前瞻(?!..)

var regexPDF = new RegExp('href=[\'"](assets/(?:.*?(?!\.pdf).{4}|.{0,3}))?[\'"]','gi');

注意:您不需要在字符类中使用|,因为它被视为文字

答案 1 :(得分:0)

负面模式是正则表达不太擅长的东西。但是,您可以执行以下操作:

var regexPDF = /[^.]*?\.(?!pdf)/gi;

// examples
"test.exe".match(regexPDF) // returns "test."
"test.pdf".match(regexPDF) // returns null

这样做的缺点是不显示文件的类型(如果你需要结果)但是DOES过滤掉所有的pdfs。它也会打破文件名中的点,如test.pdf.bak(但如果需要,你可以增强正则表达式以识别它)。

旁注:不要使用正则表达式构造函数,而应使用普通的正则表达式文字符号/.../