[[wiki:WikiStart|Вики MC04]] == Регулярные выражения == В плате VE-01 в качестве шаблонов номеров применяются perl-совместимые регулярные выражения ([https://www.pcre.org/ PCRE]). Регулярные выражения (англ. regular expressions) - это широко используемый способ описания шаблонов для поиска текста и проверки соответствия текста шаблону. Регулярные выражения - формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов. Для поиска используется строка-образец (шаблон), состоящая из символов и метасимволов и задающая правило поиска. В плате VE-01 регулярные выражения применяются в следующих настройках: - [sip_ua:wiki:EndpointParameters#%D0%A0%D0%B0%D0%B7%D0%BD%D1%8B%D0%B5%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B Настройка "Рег. выражение вызова"]. Настройка коммутации вызовов в данное окончание. При обслуживаниии вызова, после проверки совпадений вызываемого номера с номерами канальных окончаний, если совпадений обнаружено не было, выполняется второй проход, на котором к номеру(username) вызываемого абонента применяется регулярное выражение. Вызов будет передан для обслуживания первому незанятому канальному окончанию, у которого задано регулярное выражение вызова, под которое подпадает вызываемый номер. Примеры: - `.` - номер содержит хотя-бы 1 символ, любой (при задании такого выражения в качестве "Рег. выражение вызова", окончание будет принимать любые вызовы); - `555` - окончание будет принимать вызовы на любой номер содержащий 555, например: 83455567, 555123, 123555. - `^5` - номер начинается с пятёрки, окончание будет принимать вызовы только на номера начинающиеся с цифры 5 (символ `^` в выражении обозначает начало номера); - `^537` - номер начинается с 537; - `^537$` - только номер 537; - `.{4}` - 4 любых символа, например `123#`; - `^2\d{6}$` - номер длиной ровно 7 цифр и начинается с цифры 2, например `2123456`(символ `$` в выражении обозначает конец номера); - `^2\d{6}` - номер длиной не менее 7 цифр и начинается с цифры 2, например `2123456#789`; - `^(?![3,4]0\d{2})\d*` - принимает все вызовы кроме номеров начинающихся на 30хх, 40хх ( ; - `^[3,4]0\d{2}$` - принимает вызовы только на номера вида 30хх, 40хx; - `^8(?!10)\d{10}$` - междугородние номера длиной 11 цифр, начинающиеся с 8, исключая международные, начинающиеся с 810; - `/^2(\d{6})/83422\1` - регулярное выражение с заменой: номер из 7 цифр, начинающийся с цифры 2, в случае совпадения номера с выражением `^2(\d{6})`, окончание принимает вызов, и к номеру добавляется префикс '8342'. Т.е. вызов на номер 2241205 будет принят окончанием и отправлен в сторону TDM на номер 83422241205; - [sip_ua:wiki:EndpointParameters#%D0%A0%D0%B0%D0%B7%D0%BD%D1%8B%D0%B5%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B Настройка "Рег. выражение набора/номера"] - применяется в абонентских окончаний FxS, 1ИНД, АДАСЭ, R2. Настройка "быстрого набора" номеров без ожидания таймаута: номер, набираемый абонентом соответствующего окончания проверяется на совпадение с регулярным выражением указанным в настройке. При совпадении с регулярным выражением немедленно отправляется вызов в IP-сеть без ожидания таймаута набора. Если же совпадения с регулярным выражением не произошло, вызов будет отправлен по истечению таймаута набора очередной цифры. Примеры: - `^2\d{6}` - вызов будет немедленно отправлен, как только абонент наберёт цифру 2 и ещё 6 любых цифр, например `2123456`; - `^[2,3,5]\d{2}` - номер начинается с одной из цифр 2, 3 или 5, затем две любые цифры, например `374`; - `^+?7\d{10}` - в начале номера необязательный символ `+`, затем цифра 7, затем 10 любых цифр `+73422241205` или `73422241205`; - `^[^6,8]` - номер начинается с любой цифры кроме 6 или 8; - `(^7\d{4})|(^6\d{2})` - 5 цифр начинающиеся с 7 или 3 цифры начинающиеся с 6, например `71234`, `612`; - `/^2(\d{6})/83422\1` - регулярное выражение с заменой: номер из 7 цифр, начинающийся с цифры 2, в случае совпадения набранного номера с выражением `^2(\d{6})`, вызов будет отправлен на номер с префиксом '8342'. Т.е. если в окончании FxS задать такое выражение в качестве "Рег. выражение номера", то при наборе абонентом на телефоне номера 2241205 вызов будет отправлен на номер 83422241205; - [sip_ua:wiki:FunctionsSipRouting Функция "Маршрутизация SIP"] Перенаправление вызовов. Каждый маршрут состоит из двух основных частей - регулярного выражения, на совпадение с которым проверяется цель (target) запроса SIP, и строки, которой заменяется цель в случае совпадения. Примеры настройки маршрутизации можно увидеть в [sip_ua:wiki:FunctionsSipRouting описании этой функции]. Познакомиться подробней с регулярными выражениями можно по следующим ссылкам: - Описание синтаксиса на русском: http://www.shtogrin.com/library/web/pcre/doc/pcre/ - Шпаргалка на русском: https://www.exlab.net/tools/sheets/regexp.html - Полезный сайт на английском http://www.rexegg.com/ - Онлайн калькулятор, где можно проверить свои рег. выражения: https://regex101.com/ [[Image(2.png)]] [[Image(1.png)]] [[BR]][[BR]][[wiki:WikiStart|Вики MC04]]