Поскольку все чаще встречаюсь с непониманием того, что творится у нас в настройках маршрутизации, решил сегодня написать несколько слов о регулярных выражениях
Кода Вы открываете настройку исходящей маршрутизации, то можете увидеть вот такой кошмар:
Давайте на данном примере попытаемся понять, что и как работает.
^\+?38?(0[679]3\d{7})$ |
Данной регулярное выражение описывает коды украинского мобильного оператора lifecell. У данного оператора есть 3 кода: 63, 73 и 93. Номера телефонов пользователи могут набрать как в международном формате +38063ххххххх, в национальном формате 073ххххххх, так и вообще в устаревшем формате: 8093ххххххх. Вот таким выражением мы закрываем все варианты набора номера.
Рассмотрим более детальней:
Для закрепления, рассмотрим еще один пример:
^\+?(7|8)(\d{10,12})$ |
Это регулярное выражение описывает все телефонные коды РФ (если честно, то и Казахстана, но, сейчас не об этом). Посмотрим только отличие от предыдущего
Так же, в отличие от предыдущего выражения, здесь у нас дважды встречаются круглые скобки, а это означает, что мы отдельно можем работать с первым и вторым совпадением. Что это означает? Давайте посмотрим на очень полезную функцию, которая должна появиться в следующем релизе - тест регулярного выражения:
Провайдер требует от нас всегда присылать номера в национальном формате через 8. Для того, что бы набранный мною номер +74997045627 уходил к провайдеру в формате 84997045627, наш bridge должен быть вот таким:
{ "bridge": { "endpoints": [ { "dialString": "8®0.$2", "name": "myMskGw", "type": "sipGateway" } ] } } |
Надеюсь, что теперь стало немного понятьней, что такое регулярное выражение и как его правильно прочитать.