fork download
  1. <?php
  2.  
  3.  
  4. /**
  5.  * (\+7|\s+\+7|\+\s7|\s+\+\s7|8|\s+8) - Начало номера
  6.  * ((-|\s\(|\(|\s\(\s|)?) - После начала номера может быть промежуток
  7.  * ([0-9]{3}|[0-9]{4}) - После идет код города (3 и 4 цифры)
  8.  * ((-|\)\s|\s|\)\s-\s|\s\)\s)?) - Еще один промежуток
  9.  * ([0-9]{1}|[0-9]{2}|[0-9]{3}|[0-9]{7}) - Цифры
  10.  */
  11.  
  12. $regexp = '!^(\+7|\s+\+7|\+\s7|\s+\+\s7|8|\s+8)((-|\s\(|\(|\s\(\s|)?)([0-9]{3}|[0-9]{4})([0-9]{1}|[0-9]{2}|[0-9]{3}|[0-9]{7})!';
  13.  
  14. $correctNumber = array(
  15. '84951234567',
  16. '+74951234567',
  17. '8-495-1-234-567',
  18. ' 8 (8122) 56-56-56',
  19. '8-911-1234567',
  20. '8 (911) 12 345 67',
  21. '8-911 12 345 67',
  22. '8 (911) - 123 - 45 - 67',
  23. '+ 7 999 123 4567',
  24. ' + 7 999 123 4567',
  25. ' +7 999 123 4567',
  26. '8 ( 999 ) 1234567',
  27. '8(999)1234567',
  28. '8 999 123 4567',
  29. );
  30. $wrongNumber = array(
  31. '02',
  32. '9+',
  33. ' ',
  34. 'abcdefg',
  35. '84951234567 позвать люсю',
  36. '849512345',
  37. '849512345678',
  38. '8 (409) 123-123-123',
  39. '7900123467',
  40. '5005005001',
  41. '8888-8888-88',
  42. '84951a234567',
  43. '8495123456a',
  44. '+1 234 5678901',
  45. '+8 234 5678901',
  46. '7 234 5678901',
  47. );
  48.  
  49. echo "Верные номера.\n\n";
  50.  
  51. for ($i = 0; $i < count($correctNumber); $i++) {
  52. if (preg_match($regexp, $correctNumber[$i])) {
  53. echo "[+] Номер \"{$correctNumber[$i]}\" записан верно.\n";
  54. } else {
  55. echo "[-] Номер \"{$correctNumber[$i]}\" записан не верно.\n";
  56. }
  57. }
  58.  
  59. echo "\nНеверные номера.\n\n";
  60.  
  61. for ($i = 0; $i < count($wrongNumber); $i++) {
  62. if (preg_match($regexp, $wrongNumber[$i])) {
  63. echo "[+] Номер \"{$wrongNumber[$i]}\" записан верно.\n";
  64. } else {
  65. echo "[-] Номер \"{$wrongNumber[$i]}\" записан не верно.\n";
  66. }
  67. }
Success #stdin #stdout 0.02s 24144KB
stdin
Standard input is empty
stdout
Верные номера.

[+] Номер "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" записан не верно.
[-] Номер " + 7 999 123 4567" записан не верно.
[-] Номер " +7 999 123 4567" записан не верно.
[-] Номер "8 ( 999 ) 1234567" записан не верно.
[-] Номер "8(999)1234567" записан не верно.
[-] Номер "8 999 123 4567" записан не верно.

Неверные номера.

[-] Номер "02" записан не верно.
[-] Номер "9+" записан не верно.
[-] Номер "  " записан не верно.
[-] Номер "abcdefg" записан не верно.
[+] Номер "84951234567 позвать люсю" записан верно.
[+] Номер "849512345" записан верно.
[+] Номер "849512345678" записан верно.
[-] Номер "8 (409) 123-123-123" записан не верно.
[-] Номер "7900123467" записан не верно.
[-] Номер "5005005001" записан не верно.
[-] Номер "8888-8888-88" записан не верно.
[+] Номер "84951a234567" записан верно.
[+] Номер "8495123456a" записан верно.
[-] Номер "+1 234 5678901" записан не верно.
[-] Номер "+8 234 5678901" записан не верно.
[-] Номер "7 234 5678901" записан не верно.