объединить регулярные выражения - PullRequest
0 голосов
/ 13 марта 2019

Я знаю, что этот вопрос задавался ранее, однако решения, которые я нашел, не работают для меня.Я пишу простую программу, в которой один из методов принимает пользовательский ввод и проверяет, содержит ли он какие-либо символы, кроме букв ( например, , число или специальные символы).Мое первое решение выглядит так:

public boolean charFinder(String inputString) {
    Pattern p = Pattern.compile("\\W", Pattern.CASE_INSENSITIVE);
    Pattern p2 = Pattern.compile("0-9", Pattern.CASE_INSENSITIVE);
    Matcher m = p.matcher(inputString);
    Matcher m2 = p2.matcher(inputString);

    return m.find() || m2.find();
}

И оно прекрасно работает, но я хочу сделать его более элегантным.Итак, я попробовал это:

public boolean charFinder(String inputString) {
    Pattern p = Pattern.compile("\\W | \\d", Pattern.CASE_INSENSITIVE);
    Matcher m = p.matcher(inputString);

    return m.find();
}

И это не работает.Правильно ли я слил регулярные выражения?

1 Ответ

3 голосов
/ 13 марта 2019

Удалите пробелы в "\\W | \\d", иначе они будут рассматриваться как часть шаблона, которому вы пытаетесь соответствовать:

Pattern p = Pattern.compile("\\W|\\d", Pattern.CASE_INSENSITIVE);

Также обратите внимание, что Pattern.CASE_INSENSITIVE здесь не имеет значения, потому что \W уже без учета регистра и \d не соответствует буквам, так или иначе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...