2013-09-25 5 views
5

У меня есть следующее рабочее регулярное выражение для извлечения большого количества телефонных номеров в разных форматах.Javascript RegExp - извлечения телефонных номеров из строки

Смотрите здесь: http://jsfiddle.net/SB5Ly/4/

var regex = new RegExp(
      "\\+?\\(?\\d*\\)? ?\\(?\\d+\\)?\\d*([\\s./-]?\\d{2,})+", 
      "g" 
     ); 
.... 

(Если сценарий не сработал, нажмите кнопку «Выполнить» в верхнем меню)

Как вы можете видеть в примере (, следуя link), последние 2-3 формата телефонных номеров (var phoneNumbers) не соответствуют используемому регулярному выражению. Вы можете протестировать регулярное выражение, изменяющее его в скрипте и запускающее его.

Так что мне нужно регулярное выражение, соответствующее всем перечисленным форматам телефонных номеров (чтобы извлечь их со всей веб-страницы (document.body.innerHTML)).

ответ

3

Я не знаю, как предписывающие вы хотите быть, но это соответствует всем вашим примерам:

var regex = new RegExp("\\+?\\(?\\d*\\)? ?\\(?\\d+\\)?\\d*([\\s./-]?\\d{2,})+", "g"); 

См live demo этого регулярного выражения.


Одна маленькая ошибка с регулярным выражением: При желании включить буквального тире в классе символов, либо избежать его или поместить его первым или последним.

У вас был [\\s-.], что неверно. Он должен быть либо [\\s.-], [-\\s.], либо [\\s\\-.].

+0

Благодарим за помощь @bohemian. На самом деле я забыл упомянуть, что я тоже не хотел извлекать код страны. Но это мне очень помогает. Если вы можете отправить мне еще одно регулярное выражение для извлечения номера телефона без кода страны, будет лучшим. И спасибо за замечания, тоже. –

+0

Хорошо, я меняю свой код на работу с кодами стран. Только для любопытства вы можете предоставить новое регулярное выражение для исключения кодов стран? Большое спасибо! –

+0

Я должен заметить проблему, в приведенной ниже демонстрационной версии все строки были сопоставлены, но когда я запускаю приведенный выше сценарий, следующие строки не соответствуют: (0490) 260722 (0) 442207724 + 33 (0) 442207724 Можете ли вы мне помочь? –

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