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