fork download
  1. <?php
  2.  
  3. $wrightNumbers = array(
  4. '84951234567',
  5. '+74951234567',
  6. '8-495-1-234-567',
  7. ' 8 (8122) 56-56-56',
  8. '8-911-1234567',
  9. '8 (911) 12 345 67',
  10. '8-911 12 345 67',
  11. '8 (911) - 123 - 45 - 67',
  12. '+ 7 999 123 4567',
  13. '8 ( 999 ) 1234567',
  14. '8 999 123 4567'
  15. );
  16. $wrongNumbers = array(
  17. '+ 7(1234) - 1(2)3 - 123', // отсебятина: лишние скобки
  18. '02',
  19. '84951234567 позвать люсю',
  20. '849512345',
  21. '849512345678',
  22. '8 (409) 123-123-123',
  23. '7900123467',
  24. '5005005001',
  25. '8888-8888-88',
  26. '84951a234567',
  27. '8495123456a',
  28. '+1 234 5678901', // неверный код страны
  29. '+8 234 5678901', // либо 8 либо +7
  30. '7 234 5678901' // нет +
  31. );
  32.  
  33. function validatePhones(array $numbers)
  34. {
  35. //$regExp = '/^\s?(8|\+\s?7)\s?-?\s?\(?(\s?-?\s?\d\s?\)?\s?-?\s?){10}$/';
  36. //$regExp = '/^\s?(8|\+\s?7)\s?-?\s?\(?(\s?-?\s?\d){3}\s?\)?(\s?-?\s?\d){7}\s?$/';
  37. $regExp = '/^\s?(8|\+\s?7)\s?-?\s?\(?((\s?-?\s?\d){3}\s?\)?(\s?-?\s?\d){7}\s?|(\s?-?\s?\d){4}\s?\)?(\s?-?\s?\d){6}\s?)$/';
  38. foreach ($numbers as $number) {
  39. if (preg_match($regExp, $number)) {
  40. echo "+ Номер \"$number\" прошел проверку. +\n";
  41. } else {
  42. echo "- Номер \"$number\" НЕ прошел проверку. -\n";
  43. }
  44. }
  45. echo "==================================================\n";
  46. }
  47.  
  48. validatePhones($wrightNumbers);
  49. validatePhones($wrongNumbers);
Success #stdin #stdout 0.02s 24192KB
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" прошел проверку. +
+ Номер "8 ( 999 ) 1234567" прошел проверку. +
+ Номер "8 999 123 4567" прошел проверку. +
==================================================
- Номер "+ 7(1234) - 1(2)3 - 123" НЕ прошел проверку. -
- Номер "02" НЕ прошел проверку. -
- Номер "84951234567 позвать люсю" НЕ прошел проверку. -
- Номер "849512345" НЕ прошел проверку. -
- Номер "849512345678" НЕ прошел проверку. -
- Номер "8 (409) 123-123-123" НЕ прошел проверку. -
- Номер "7900123467" НЕ прошел проверку. -
- Номер "5005005001" НЕ прошел проверку. -
- Номер "8888-8888-88" НЕ прошел проверку. -
- Номер "84951a234567" НЕ прошел проверку. -
- Номер "8495123456a" НЕ прошел проверку. -
- Номер "+1 234 5678901" НЕ прошел проверку. -
- Номер "+8 234 5678901" НЕ прошел проверку. -
- Номер "7 234 5678901" НЕ прошел проверку. -
==================================================