この正規表現を使用できます:
^(?!^(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:?"||/?
明らかな何かが欠けている場合は、事前にお詫び申し上げます。ご協力いただきありがとうございます。