Как использовать регулярное выражение для сопоставления восьмизначного числа, которое также может иметь пробел в середине? - PullRequest
1 голос
/ 04 января 2011

Я хочу соответствовать 1234 5678 или 12345678

Это регулярное выражение неверно?

if(!number.matches("^\\d{4}[, ]\\d{4}$")){
  throw new Exception(" number is not valid : "+number);
}

Ответы [ 6 ]

6 голосов
/ 04 января 2011

попробуйте квантификатор после []

^\d{4}[\s,]?\d{4}$
1 голос
/ 04 января 2011

Вы тоже хотите поставить запятую?[, ] соответствует запятой или пробелом.Эффект, к которому вы стремитесь, выглядит как ( |), за исключением того, что есть лучшие способы сделать это:

Я думаю, что вы ищете это:\ s может соответствовать любому символу пробела, включая переводы строки.Если вы только хотите сопоставить пробел ' ', используйте следующее:

/^\d{4}[ ]?\d{4}$/
1 голос
/ 04 января 2011

Вы близки, вам нужно указать, что пробел / запятая необязательны с квантификатором. ? хороший, потому что это означает «ноль или один». Таким образом, ваше выражение будет

^\d{4}[, ]?\d{4}$
0 голосов
/ 04 января 2011

Возможно, сейчас самое время запустить интерактивное учебное пособие по регулярным выражениям .Отличный инструмент для работы с выражениями Regex без необходимости испортить свой собственный код.

0 голосов
/ 04 января 2011
 ^\d{4}[\s]?\d{4}$ 

Попробуйте без запятой.

0 голосов
/ 04 января 2011

требуется модификация для соответствия '12345678'

используйте это регулярное выражение: "^ \ d {4} [,]? \ D {4} $"

Надеюсь, это поможет

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