Как разрешить только! @ # $% ^ & * В строке с использованием Java - PullRequest
0 голосов
/ 28 июня 2019

Я хочу разрешить только вышеупомянутые специальные символы.

Я пробовал с этим

private final Pattern hasSpecialChar = Pattern.compile("[!@#$%^&*]");
if (!hasSpecialChar.matcher(password).find()) {
    return "String allows only !@#$%^&* special characters";
}

, но он также разрешает другие специальные символы.

Может любое телопомогите мне создать правильное регулярное выражение.

Ответы [ 3 ]

2 голосов
/ 28 июня 2019

Попробуйте это:

private final Pattern hasSpecialChar = Pattern.compile("[^A-Za-z0-9!@#$%^&*]+");
if (hasSpecialChar.matcher(password).find()) {
    return "String allows only !@#$%^&* special characters";
}
1 голос
/ 28 июня 2019

Ваш фрагмент кода проверяет, появляется ли специальный символ хотя бы один раз.

Простая поправка к этому состояла бы в том, чтобы отменить проверку - то есть найти хотя бы один не специальный символ, который не входит в набор принятых символов:

private final Pattern hasSpecialChar = Pattern.compile("[^!@#$%^&*]");
if (hasSpecialChar.matcher(password).find()) {
    return "String allows only !@#$%^&* special characters";
}

Обратите внимание, что в этом ответе предполагается, что вы хотите разрешить только эти специальные символы, а в выводе нет других буквенно-цифровых символов.

1 голос
/ 28 июня 2019

Mabe ниже фрагмента поможет вам:

private final Pattern hasSpecialChar = Pattern.compile("[^!@#$%^&*]");
if (hasSpecialChar.matcher(password).find()) {
        return "String allows only !@#$%^&* special characters";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...