Подтвердить что ты не робот

Java с использованием regex для проверки входной строки

г:.

String string="Marc Louie, Garduque Bautista";

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

String pattern = "[a-zA-Z]+(\\s[a-zA-Z]+)+";

но он не проверяет наличие запятой или нет. Любое предложение?

4b9b3361

Ответ 1

Вам нужно использовать шаблон

^[A-Za-z, ]++$

Например

public static void main(String[] args) throws IOException {
    final String input = "Marc Louie, Garduque Bautista";
    final Pattern pattern = Pattern.compile("^[A-Za-z, ]++$");
    if (!pattern.matcher(input).matches()) {
        throw new IllegalArgumentException("Invalid String");
    }
}

ИЗМЕНИТЬ

Согласно Майклу проницательный комментарий OP может означать одну запятую, в этом случае

^[A-Za-z ]++,[A-Za-z ]++$

Должна работать.

Ответ 2

Почему бы просто просто:

"[a-zA-Z\\s,]+"

Ответ 3

Используйте это лучше всего

"(?i)[a-z,\\s]+"

Ответ 4

Если вы имеете в виду "некоторые слова, любые пробелы и одну запятую, где бы это ни было", то я чувствую, что предлагаю такой подход:

"^[^,]* *, *[^,]*$"

Это означает: "Начать с нуля или более символов, которые НЕ (^) являются запятой, тогда вы можете найти ноль или больше пробелов, затем запятую, затем снова ноль или более пробелов, а затем, наконец, снова ноль или более символов, которые NOT (^) запятая".