我可以使用this regex:更換用下劃線無效字符之前保存
^(?!^(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:?"||/?
如果我錯過了某些明顯的東西,我很抱歉,並感謝您提供的任何幫助。
我想我可以更簡單一些,直到我找到正確的倒置的reged。像這樣的東西似乎現在適合我的需要: http://stackoverflow.com/questions/3885964/regex-to-replace-invalid-characters 如果任何人有適當的「倒置」正則表達式但是,我會成爲接受者。 再次感謝。 – Madscripter
我可能會誤解這個問題。你想單獨選擇每個無效字符,還是試圖選擇整個文件名,如果它是無效的?我的答案解決了後者。 –
首先,感謝您對此進行調查。我只是看了一下你的建議,似乎讓我誤解了自己。也許我應該編輯我最初的問題,但是我想用模式替換被模式檢測爲無效的任何字符(或字符組),因此將有效字符(或字符組)保留爲他們是(不匹配)。希望這可以消除混亂。在我上面的例子中,預期的匹配應該是:COM1:?「|| /? – Madscripter