Я создал регулярное выражение, чтобы проверить, есть ли у администратора адрес электронной почты администратор, прошивка, службы &. Если я помещаю'ad 'вместо' admin 'в адрес электронной почты, тогда также он возвращает 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].com";
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) –