Java с использованием regex для проверки входной строки
г:.
String string="Marc Louie, Garduque Bautista";
Я хочу проверить, содержит ли строка только слова, запятую и пробелы. я попытался использовать регулярное выражение, и ближайший я получил это:
String pattern = "[a-zA-Z]+(\\s[a-zA-Z]+)+";
но он не проверяет наличие запятой или нет. Любое предложение?
Ответы
Ответ 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 (^) запятая".