2015-08-21 2 views
-1

Мне нужно регулярное выражение для номера телефона.Регулярное выражение для разбора номера телефона

Пример,

1234567899 should be (123)(456)(7899) 
12345678 should be (123)(456)(78) 
1234567 should be (123)(456)(7) 
123456 should be (123)(456) 
12345 should be (123)(45) 
123 should be (123) 
1 should be (1) 

Я попытался /([0-9]{0,3})([0-9]{0,3})([0-9]{0,4})/ и /([0-9]{3})([0-9]{3})([0-9]{4})/

Но он принимает только тогда, когда все 10 числа на входе.

мне нужно соответствовать затем заменить (

+0

Могу ли я спросить, почему вам нужно регулярное выражение для этого? – enpenax

+0

Как насчет международных телефонных номеров? Всегда ожидайте неожиданного! –

ответ

1

Это, казалось бы работать:

/(\d{1,3})(\d{1,3})?(\d{1,4})?/ 

Live test here

+0

как добавить скобки? –

+0

На каком языке вы используете? – Blorgbeard

+0

Mule 'datawaeve' и использовать' lambda' – Sahal

1

Проверьте это: /^\(\d{0,3}\)(\(\d{0,3}\))?(\(\d{0,4}\))?$/

https://regex101.com/r/qC0fS9/2

+0

Это похоже на скобки? OP имеет необработанные цифры и хочет добавить скобки. Кроме того, нет необходимости в '[]' around' \ d'. – Blorgbeard

+0

Да, я обновил регулярное выражение и удалил '[]', из моего понимания, хотя он хотел найти скобки. В любом случае вопрос теперь имеет ответ. – KAD

1

использование й является картина

((^\d{1,3})|(?<=^\d{3})(\d{1,3})|(\d+$)) 

или упрощены до

(^\d{3}|(?<=^\d{3})\d{3}|\d+$) 

и заменить (\1)

Demo

Смежные вопросы