特定の文字が存在するかどうかをチェックして、文字列が有効/無効かどうかをテストしています。;を含む文字列 #/%= | + \ "<>は無効と見なされます。現在、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エスケープ文字を追加する前の元の正規表現文字列は次のとおりです。
.*(;|#|/|%|=|\||\+|\\|"|<|>)+.*
私の場合、「d @ vik」のような名前が有効であると考えられているため、[Az]のような文字クラスを使用することはオプションではないようです。