我正在尝试匹配HTML文档中包含指向特定文件夹的链接的所有href属性,这些属性不是PDF。我无法让它匹配,我有一个获得所有PDF:
var regexPDF = new RegExp('href=[\'|"](assets/.*?\.pdf)?[\'|"]','gi');
但我排除PDF的尝试并没有让我走得太远。有没有办法做我正在做的事情,或者我更好地匹配所有文件然后使用条件语句检查它是否是PDF?的Ta!
达伦答案 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
(但如果需要,你可以增强正则表达式以识别它)。
旁注:不要使用正则表达式构造函数,而应使用普通的正则表达式文字符号/.../
。