Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Як створити регулярний вираз для номеру телефона Укр, модуль сімпл


 Share

Recommended Posts

Підкажіть будь ласка хто як вирішував проблему з номером телефону , при звичайній настройці сімпла значення маски пропускає помилки типу +38(038)097-641-02-60
Потрібно щоб як в скріні +38(0**) там де ** неможна було ввести +,3,8,0,  і тд а тільки реально ціфри операторів типу 067 068 і тд,
хто як вирішував цю проблему?

Знімок екрана 2023-11-15 о 18.03.44.png

Link to comment
Share on other sites


Сама маска ввода в симпле задается, но я лично ее меняю на другой вариант, мне не нравится то, что симпла использует для маски.

А проверка, в catalog/model/tool/simpleapimain.php

что-то вроде такого:

public function validateTelephone($telephone) {
	$telephone = preg_replace(array('/-/', '/Х/', '/\ /', '/\+/', '/\(/', '/\)/'), '', $telephone);

	if (utf8_strlen($telephone) == 12 && substr($telephone, 0, 3) == '380' && $telephone{3} != 0) {
		return true;
	}

	return false;
}

ну и в симпле указать эту функцию как проверку

  • +1 1
Link to comment
Share on other sites

В 15.11.2023 в 18:05, Tyry сказав:

Підкажіть будь ласка хто як вирішував проблему з номером телефону , при звичайній настройці сімпла значення маски пропускає помилки типу +38(038)097-641-02-60
Потрібно щоб як в скріні +38(0**) там де ** неможна було ввести +,3,8,0,  і тд а тільки реально ціфри операторів типу 067 068 і тд,
хто як вирішував цю проблему?

Знімок екрана 2023-11-15 о 18.03.44.png

Як варіант можна використати таке регулярне вираження

1. Маску виставляємо  -  +389999999999

2. Регулярне вираження -  ^\+380[1-9]{1}\d{8}$

Міські номера пропускати не буде !

  • +1 2
Link to comment
Share on other sites


В 15.11.2023 в 18:05, Tyry сказав:

Підкажіть будь ласка хто як вирішував проблему з номером телефону , при звичайній настройці сімпла значення маски пропускає помилки типу +38(038)097-641-02-60
Потрібно щоб як в скріні +38(0**) там де ** неможна було ввести +,3,8,0,  і тд а тільки реально ціфри операторів типу 067 068 і тд,
хто як вирішував цю проблему?

 

Можна щось таке спробувати, хоча я не перевіряв

$pattern = '/^(?:\+?38)?\(0(?![0-9]{2}[0-8]|83)[0-9]{2}\d{7}\)$/';

if (preg_match($pattern, $telephone)) {
    echo 'Номер телефону ' . $telephone . ' вірний.';
} else {
    echo 'Введіть коректний номер телефону!';
}

при умові що маска буде починатись так +38(099) або 38(099)

 

Щоб ще й не враховувались міські номери - то буде складно. Можна в placeholder поля телефон вказати щось типу "Мобільний телефон"

 

Link to comment
Share on other sites

от бачив на маудау прикольно зробили тобто тільки укр оператори у виразі вказані типу 066 чи 093, а от інші цифри непропускає типу 081 чи 065 і тд, хто таке прописував хто знає як краще зробити внизу додаю скріни

Знімок екрана 2023-11-21 о 13.16.35.png

Знімок екрана 2023-11-21 о 13.16.18.png

Link to comment
Share on other sites


Я запитав у Чат джпт і створив спільно ось такий вираз зараз він суперово працює для маски +38(099)999-99-99
Плейсхолдер поставив такий +38(0

^\+\d{2}\((050|066|095|099|067|068|096|097|098|063|073|093|091|092|094)\)\d{3}-\d{2}-\d{2}$
Перевіряє по всіх операторах наших в Україні, стаціонарні мені і так непотрібно, якщо комусь не важко подивіться, ніби все ок) юзайте таке рішення)

Edited by Tyry
Link to comment
Share on other sites


Ще додав найпопулярніші міські , щоб хоть щось було 
^(?!\s*$)\+\d{2}\((050|066|095|099|067|068|096|097|098|063|073|093|091|092|094|039|067|057|032|044)\)\d{3}(-\d{2}){2}$
 

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.