1
我創建了一個正則表達式來檢查電子郵件地址是否有管理員,固件,服務&修復。如果我在電子郵件地址中輸入'ad'而不是'admin',那麼它也會根據要求返回true,這是不正確的。正則表達式不正確匹配限制值
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) –