Я пишу приложение php, которое спрашивает людей по их номеру телефона в Ливане. Я не хочу быть очень строгим в формате ввода, поэтому я сталкиваюсь с некоторыми проблемами проверки.
Номер телефона на ливанском языке выглядит так.
961 3 123456
961 : код страны. Я хочу, чтобы он был действительным с или без него.
3 : код зоны. вот где это сложно. возможные кодовые коды – 03, 70 и 71. Когда код страны присутствует, 03 падает 0 и становится 3, а 70 и 71 равны с кодом страны или без нее.
123456 : номер телефона, всегда 6 цифр.
вот форматы, которые я пытаюсь проверить:
961 3 123456
961 70 123456
961 71 123456
03 123456
70 123456
71 123456
пробелы здесь только для ясности, я проверяю после удаления всех пробелов и не буквенно-цифровых символов.
вот и все, было бы здорово, если кто-то может помочь. благодаря
Я уверен, что есть способ сделать это, но
^(961(3|70|71)|(03|70|71))\d{6}$
кажется, работает, предполагая, что я понимаю требования.
^((961)?(7(0|1))|(961|0)3)[0-9]{6}$
Это состав этих трех регулярных выражений:
(961)?(7(0|1)) // 70 and 71 prefixes (961|0)3 // (0)3 prefix [0-9]{6} // main number
Разрешая пробелы или общие разделительные символы (хотя я знаю, что вы сказали, что вас это не беспокоит):
^((961[\s+-]*(3|7(0|1)))|(03|7(0|1)))[\s+-]*\d{6}$