電子メールアドレスにadmin、ファームウェア、サービス&の修復があるかどうかを確認する正規表現を作成しました。電子メールアドレスに「admin」の代わりにput'adを入力すると、要件に応じて正しくないtrueが返されます。Regexが制限された値と正しく一致しません
private static final String EMAIL_PATTERN_New =
"^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[admin|firmware|repair|service]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
static String email = "[email protected]";
static String email1 = "[email protected]";
static String email2 = "[email protected]";
public static boolean validate(final String hex) {
pattern = Pattern.compile(EMAIL_PATTERN_New);
matcher = pattern.matcher(hex);
return matcher.matches();
}
System.out.println(validate(email)); //true
System.out.println(validate(email1)); //true but it should be false
System.out.println(validate(email2)); //true but it should be false
他の電子メールアドレスファームウェア、サービス、修理と同じです。
置き換え '[管理者|ファームウェア|修理|サービス] +' 'と(管理者|ファームウェア|修理|サービス)' –
WiktorStribiżew静的な文字列EMAIL2 @ =「[email protected] .com "; +を+と置き換えてもtrueを返します。むしろそれは間違っているはずです。 – Harleen
[こちらをご覧ください](https://regex101.com/r/iZ6uT2/3)。正規表現と一致しないはずです。そして[これはJavaのデモです](https://ideone.com/MbbE1A) –