2013-08-09 1 views
1

У меня есть следующий Regex выражения для приложения Java:Как установить минимальный и максимальное количество цифр позволили в регулярном выражении для номера телефона

[\+0-9]+([\s0-9]+)? 

Как ограничить приведенное выше выражение номера телефона к минимуму из 4 цифр и максимум 7 цифр? Я думал, что это будет похоже на добавление этого выражения {4,7} к выражению, но оно не работает.

Любые советы, пожалуйста?

В основном мой номер телефона может начинаться с знака +, сопровождаемого цифрами (+004 ...) или только с номерами (004 ...), а также может содержать пробелы между любыми цифрами (0 0 4. ..).

+1

Take 10млн читать о [повторение] (http://www.regular-expressions.info/repeat .html). – HamZa

+1

@HamZa. Он знает о повторении. Просто не может применить его правильно в своем случае. По-прежнему стоит прочитать учебник. –

ответ

6

Вы можете попробовать это регулярное выражение:

[+]?(?:[0-9]\s*){4,7} 

Пояснение:

[+]?   // Optional + sign 
(?:[0-9]\s*) // A single digit followed by 0 or more whitespaces 
{4,7}   // 4 to 7 repetition of previous pattern 

Примеры тестов:

String regex = "[+]?(?:[0-9]\\s*){4,7}"; 

System.out.println("0045234".matches(regex));  // true 
System.out.println("+004 5234".matches(regex));  // true 
System.out.println("+00 452 34".matches(regex)); // true 
System.out.println("0 0 4 5 2 3 4".matches(regex)); // true 
System.out.println("004523434534".matches(regex)); // false 
System.out.println("004".matches(regex));   // false 
2

"\\+?(\\d ?){3,6}\\d" должен соответствовать дополнительный знак + следуют с 4-7 числа и дополнительные пробелы между цифрами.

0

Аналогичная структура, как указано выше, но с: :? taken off (? Не знаю, почему это там)

[+]?([0-9]\s*){4,7}