我可以使用这个正则表达式:
^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(\..+)?$)[^\x00-\x1f\\?*:\"";|/]+$
在 VBscript 中检测无效的 Windows 文件名,并在保存前拒绝它们。我想通过用标准字符(例如下划线“_”)自动替换任何无效字符(或其连续字符)来为我的用户添加额外的服务。
因此,我需要想出另一种模式,因为据我所知,VBscript 仅提供一种在模式匹配时替换的方法:
with getRGX()
.ignoreCase = TRUE
.global = TRUE
.pattern = < inputPattern >
< outputCleanfileName > = .Replace( < inputDirtyFileName >, < "_" > )
end with
到目前为止,我想出的最好的方法如下:
((PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(\..+)?)?[\\?*:\"";|/]+
不幸的是,它与扩展名混淆了:
INPUT = COM1:aAZB?":a|a|a/.txt?
MATCH = COM1:?"||/.txt?
EXPECTED = COM1:?"||/?
如果我遗漏了一些明显的东西,我提前道歉,并感谢您提供的任何帮助。