0

我有一个用 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,}|рф)+)

...但它不起作用。

谁能帮我?

4

1 回答 1

0

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

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

附带说明一下,VBScript 完全支持负前瞻,不支持负前瞻(一种明显更加复杂和密集的行为)。

于 2013-11-01T17:30:27.617 回答