0

我正在尝试匹配 HTML 文档中包含指向特定文件夹的链接的所有 href 属性,而不是 PDF。我很难让它匹配,我有一个可以获取所有 PDF:

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

但是我排除 PDF 的尝试并没有让我走得很远。有没有办法做我所追求的,或者我最好只匹配所有文件然后使用条件语句来检查它是否是 PDF?塔!

达伦

4

2 回答 2

0

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

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

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

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

旁注:不要使用 Regex Constructor 而是使用普通的 regex literal notation /.../

于 2013-06-04T11:48:43.190 回答
0

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

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

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

于 2013-06-04T11:41:25.373 回答