<?php
/* Дан текст, который по идее должен быть номером телефона в виде 8-(911)-506 56 56
(т.е. человек может ввести не только цифры, но и скобки, минусы, может что-то еще).
Но в реальности, пользователь может вместо номера написать что угодно.
Напиши скрипт для проверки правильности введенного номера («8(911)-506 56 56» —
правильный номер, «8-911-50-656-56» — правильный, «89115065656» — правильный,
«02» — неправильный, «89115065656 позвать Люду» — неправильный).*/
// Правильные:
$correctNumbers = [
'84951234567' ,
'+74951234567' ,
'8-495-1-234-567' ,
' 8 (8122) 56-56-56' ,
'8-911-1234567' ,
'8 (911) 12 345 67' ,
'8-911 12 345 67' ,
'8 (911) - 123 - 45 - 67' ,
'+ 7 999 123 4567' ,
'8 ( 999 ) 1234567' ,
'8 999 123 4567'
] ;
// Неправильные:
$incorrectNumbers = [
'02' ,
'84951234567 позвать люсю' ,
'849512345' ,
'849512345678' ,
'8 (409) 123-123-123' ,
'7900123467' ,
'5005005001' ,
'8888-8888-88' ,
'84951a234567' ,
'8495123456a' ,
'+1 234 5678901' , /* неверный код страны */
'+8 234 5678901' , /* либо 8 либо +7 */
'7 234 5678901' , /* нет + */
'7 234((((( 5678901' , /* не допускаются подряд идущие пробелы, скобки, дефисы */
'8 (911( 12 345 67' , /* несоответствие скобок */
'8 (911 12 345 67' , /* если есть открывающая скобка, то нужна закрывающая */
'8 (911 12 345 67)' , /* закрывающая скобка "не там" */
] ;
// $regExp = '/^(\+\s?7|8)([\s\(\)-]*\d){10}$/';
// $regExp = '/^(\+\s?7|8)\s?-?\s?\(?(\s?\d){3}\s?\)?(\s?-?\s?\d){7}$/';
// $regExp = '/^(\+\s?7|8)\s?-?\s?\(?((\s?\d){3}|(\s?\d){4})\s?\)?(?(3)(\s?-?\s?\d){7}|(\s?-?\s?\d){6})$/';
$regExp = '/^(\+\s?7|8)\s?-?\s?(\()?((\s?\d){3}|(\s?\d){4})\s?(?(2)\))(?(4)(\s?-?\s?\d){7}|(\s?-?\s?\d){6})$/' ;
foreach ( array_merge ( $correctNumbers , $incorrectNumbers ) as $number ) { echo "Номер \" {$number} \" правильный.\n " ;
} else {
echo "Номер \" {$number} \" ошибочный.\n " ;
}
}
PD9waHAKLyog0JTQsNC9INGC0LXQutGB0YIsINC60L7RgtC+0YDRi9C5INC/0L4g0LjQtNC10LUg0LTQvtC70LbQtdC9INCx0YvRgtGMINC90L7QvNC10YDQvtC8INGC0LXQu9C10YTQvtC90LAg0LIg0LLQuNC00LUgOC0oOTExKS01MDYgNTYgNTYKKNGCLtC1LiDRh9C10LvQvtCy0LXQuiDQvNC+0LbQtdGCINCy0LLQtdGB0YLQuCDQvdC1INGC0L7Qu9GM0LrQviDRhtC40YTRgNGLLCDQvdC+INC4INGB0LrQvtCx0LrQuCwg0LzQuNC90YPRgdGLLCDQvNC+0LbQtdGCINGH0YLQvi3RgtC+INC10YnQtSkuCtCd0L4g0LIg0YDQtdCw0LvRjNC90L7RgdGC0LgsINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDQvNC+0LbQtdGCINCy0LzQtdGB0YLQviDQvdC+0LzQtdGA0LAg0L3QsNC/0LjRgdCw0YLRjCDRh9GC0L4g0YPQs9C+0LTQvdC+LgrQndCw0L/QuNGI0Lgg0YHQutGA0LjQv9GCINC00LvRjyDQv9GA0L7QstC10YDQutC4INC/0YDQsNCy0LjQu9GM0L3QvtGB0YLQuCDQstCy0LXQtNC10L3QvdC+0LPQviDQvdC+0LzQtdGA0LAgKMKrOCg5MTEpLTUwNiA1NiA1NsK7IOKAlArQv9GA0LDQstC40LvRjNC90YvQuSDQvdC+0LzQtdGALCDCqzgtOTExLTUwLTY1Ni01NsK7IOKAlCDQv9GA0LDQstC40LvRjNC90YvQuSwgwqs4OTExNTA2NTY1NsK7IOKAlCDQv9GA0LDQstC40LvRjNC90YvQuSwKwqswMsK7IOKAlCDQvdC10L/RgNCw0LLQuNC70YzQvdGL0LksIMKrODkxMTUwNjU2NTYg0L/QvtC30LLQsNGC0Ywg0JvRjtC00YPCuyDigJQg0L3QtdC/0YDQsNCy0LjQu9GM0L3Ri9C5KS4qLwoKLy8g0J/RgNCw0LLQuNC70YzQvdGL0LU6IAokY29ycmVjdE51bWJlcnMgPSBbIAogICc4NDk1MTIzNDU2NycsIAogICcrNzQ5NTEyMzQ1NjcnLAogICc4LTQ5NS0xLTIzNC01NjcnLCAKICAnIDggKDgxMjIpIDU2LTU2LTU2JywKICAnOC05MTEtMTIzNDU2NycsCiAgJzggKDkxMSkgMTIgMzQ1IDY3JywgCiAgJzgtOTExIDEyIDM0NSA2NycsCiAgJzggKDkxMSkgLSAxMjMgLSA0NSAtIDY3JywKICAnKyA3IDk5OSAxMjMgNDU2NycsIAogICc4ICggOTk5ICkgMTIzNDU2NycsCiAgJzggOTk5IDEyMyA0NTY3JwpdOwoKLy8g0J3QtdC/0YDQsNCy0LjQu9GM0L3Ri9C1OiAKJGluY29ycmVjdE51bWJlcnMgPSBbCiAgJzAyJywKICAnODQ5NTEyMzQ1Njcg0L/QvtC30LLQsNGC0Ywg0LvRjtGB0Y4nLAogICc4NDk1MTIzNDUnLAogICc4NDk1MTIzNDU2NzgnLCAKICAnOCAoNDA5KSAxMjMtMTIzLTEyMycsCiAgJzc5MDAxMjM0NjcnLAogICc1MDA1MDA1MDAxJywKICAnODg4OC04ODg4LTg4JywKICAnODQ5NTFhMjM0NTY3JywKICAnODQ5NTEyMzQ1NmEnLCAKICAnKzEgMjM0IDU2Nzg5MDEnLCAvKiDQvdC10LLQtdGA0L3Ri9C5INC60L7QtCDRgdGC0YDQsNC90YsgKi8KICAnKzggMjM0IDU2Nzg5MDEnLCAvKiDQu9C40LHQviA4INC70LjQsdC+ICs3ICovCiAgJzcgMjM0IDU2Nzg5MDEnLCAvKiDQvdC10YIgKyAqLwogIAogICc3IDIzNCgoKCgoIDU2Nzg5MDEnLCAvKiDQvdC1INC00L7Qv9GD0YHQutCw0Y7RgtGB0Y8g0L/QvtC00YDRj9C0INC40LTRg9GJ0LjQtSDQv9GA0L7QsdC10LvRiywg0YHQutC+0LHQutC4LCDQtNC10YTQuNGB0YsgKi8KICAnOCAoOTExKCAxMiAzNDUgNjcnLCAvKiDQvdC10YHQvtC+0YLQstC10YLRgdGC0LLQuNC1INGB0LrQvtCx0L7QuiAqLwogICc4ICg5MTEgMTIgMzQ1IDY3JywgLyog0LXRgdC70Lgg0LXRgdGC0Ywg0L7RgtC60YDRi9Cy0LDRjtGJ0LDRjyDRgdC60L7QsdC60LAsINGC0L4g0L3Rg9C20L3QsCDQt9Cw0LrRgNGL0LLQsNGO0YnQsNGPICovCiAgJzggKDkxMSAxMiAzNDUgNjcpJywgLyog0LfQsNC60YDRi9Cy0LDRjtGJ0LDRjyDRgdC60L7QsdC60LAgItC90LUg0YLQsNC8IiAqLwpdOwoKCi8vICRyZWdFeHAgPSAnL14oXCtccz83fDgpKFtcc1woXCktXSpcZCl7MTB9JC8nOwovLyAkcmVnRXhwID0gJy9eKFwrXHM/N3w4KVxzPy0/XHM/XCg/KFxzP1xkKXszfVxzP1wpPyhccz8tP1xzP1xkKXs3fSQvJzsKLy8gJHJlZ0V4cCA9ICcvXihcK1xzPzd8OClccz8tP1xzP1woPygoXHM/XGQpezN9fChccz9cZCl7NH0pXHM/XCk/KD8oMykoXHM/LT9ccz9cZCl7N318KFxzPy0/XHM/XGQpezZ9KSQvJzsKJHJlZ0V4cCA9ICcvXihcK1xzPzd8OClccz8tP1xzPyhcKCk/KChccz9cZCl7M318KFxzP1xkKXs0fSlccz8oPygyKVwpKSg/KDQpKFxzPy0/XHM/XGQpezd9fChccz8tP1xzP1xkKXs2fSkkLyc7Cgpmb3JlYWNoKGFycmF5X21lcmdlKCRjb3JyZWN0TnVtYmVycywgJGluY29ycmVjdE51bWJlcnMpIGFzICRudW1iZXIpIHsKCSRudW1iZXIgPSB0cmltKCRudW1iZXIpOwoJaWYgKHByZWdfbWF0Y2goJHJlZ0V4cCwgJG51bWJlcikpIHsKCQllY2hvICLQndC+0LzQtdGAIFwieyRudW1iZXJ9XCIg0L/RgNCw0LLQuNC70YzQvdGL0LkuXG4iOwoJfSBlbHNlIHsKCQllY2hvICLQndC+0LzQtdGAIFwieyRudW1iZXJ9XCIg0L7RiNC40LHQvtGH0L3Ri9C5LlxuIjsKCX0KfQ==