排除文件扩展名正则表达式

时间:2013-11-01 17:14:02

标签: regex vbscript

我有一个用VBScript编写的URL检查的正则表达式。

regLinkEx.Pattern = "(^|[\s>='])((((http|ftp|https):\/\/)?([а-яёa-z\-_]{1,})(\.[а-яёa-z\-_]{2,})*(\.([^exe|EXE|xml|XML|dll|DLL|ini|INI|bat|BAT|dat|DAT|bin|BIN|mif|MIF|txt|TXT|]){2,}|рф)+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)"

我排除了我需要的文件扩展名,但我也希望匹配a到z的字母 这是我想要的部分,我正试图这样做......

(\.[a-z]*([^exe|EXE|xml|XML|dll|DLL|ini|INI|bat|BAT|dat|DAT|bin|BIN|mif|MIF|txt|TXT|]){2,}|рф)+)

......但它不起作用。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

在正则表达式中,方括号表示“任何字符内”的匹配。因此,例如,正则表达式[^exe|EXE|xml]{2,}匹配[exEXml]中不存在的任何两个字符。

如果您要排除某些文件扩展名,请使用negative lookahead。由于负前瞻是零长度,您可以将它们串在一起以创建类似“X后跟以下任何内容:EXE,XML,DLL”的行为(正则表达式为X(?!EXE)(?!XML)(?!DLL))。

作为旁注,VBScript完全支持负向前瞻,不支持负面后瞻(更复杂和更密集的行为)。