我通過檢查某些字符是否存在來測試字符串是否有效/無效。包含的字符串; #/%= | + \「<>被視爲無效。我下面在Java中實現當前,但我更喜歡一個更優雅的正則表達式的解決方案。使用正則表達式測試有效/無效字符串
public boolean isStringValid(String name) {
if ( name.contains(";")
|| name.contains("#")
|| name.contains("/")
|| name.contains("%")
|| name.contains("=")
|| name.contains("|")
|| name.contains("+")
|| name.contains("\\")
|| name.contains("\"")
|| name.contains("<")
|| name.contains(">")) {
return false;
}
else {
return true;
}
}
我做什麼它修改爲以下內容,
public boolean isNameValid(String name) {
return !Pattern.matches(".*(;|#|/|%|=|\\||\\+|\\\\|\"|<|>)+.*", name);
}
,但我似乎無法得到正則表達式的字符串權。在所有的Java轉義字符添加前原正則表達式的字符串如下,
.*(;|#|/|%|=|\||\+|\\|"|<|>)+.*
使用字符c類似[A-z]的類似似乎不是一種選擇,因爲像「d @ vik」這樣的名字在我的情況下應該被認爲是有效的。
當你想檢查一些東西時,最好檢查一下有效性,而不是一些無效的情況。 – popfalushi
@popfalushi我通常會同意你的看法,但我只是根據我給出的規範寫了一個自動化測試腳本。誰知道開發人員的想法? ;) – hitsuyashi