@Kle6800

Помошь с регуляркой Go?

Можете помочь с функцией
/////Функция проверяет номер на валидность
func check_num(client int , id_dispach int)  {
	/*
	Могут поступить номера
       ‎+79095876084
        79095876084
        89095876084
	 */
	fmt.Println("Проверяю номер на валидность . Номер который поступил в систему ",client)
	// проверяю формат номеров
	match_kz, _ := regexp.MatchString("^[+0-9]{1}{11,12}$", client)   ///регулярка  онлайк конструктор https://uiregex.com/ru
	match_rus, _ := regexp.MatchString("^[+0-9]{1}{11,12}$", client)   ///регулярка  онлайк конструктор https://uiregex.com/ru
	// как замена множественным if elseif
	switch {
	case match_kz:
		fmt.Println("Номер Казахстан",client,id_dispach)
	case match_rus:
		fmt.Println("Номер Россия",client,id_dispach)
	default: ///если не попал ни под одно условие уйду сюда
		fmt.Println("Номер не коректный",client,id_dispach)
		return err
	}
}


как мне после того как проверил номер на то что он подходит под case конвертировать номер под единый формат

Например в диалплане я это сделал так через регулярку
<extension name="out">
            <condition field="destination_number" expression="^(?:\+)?(?:[7,8])?72(\d{8})$">
                <action application="bridge" data="{leg_timeout=40,ignore_early_media=true}sofia/gateway/goip16/007872$1"/>
            </condition>
</extension>


Тоесть как мне сделать чтобы номер передавался всегда в формате
79095876084
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ответы на вопрос 2
@4iloveg
Full-Stack HTML Developer
Точно указанный сервис находит этой регуляркой номер? "^[+0-9]{1}{11,12}$"
Ответ написан
Во-первых, вы кавычки используете неправильные.
match_rus, _ := regexp.MatchString("^(?:\+)?(?:[7,8])?(\d{10})$", client)

Так работать не будет потому что обратный слэш внутри двойных кавычек используется для экранирования. Надо вот так:
match_rus, _ := regexp.MatchString(`^(?:\+)?(?:[7,8])?(\d{10})$`, client)

Во-вторых, у вас тут регулярка компилируется на каждый вызов проверки, что очень медленно, надо скомпилировать её заранее и потом использовать. Например, вот так.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы