fork(1) download
  1. <?php
  2.  
  3. // Правильные:
  4. $correctNumbers = [
  5. '84951234567', '+74951234567', '8-495-1-234-567',
  6. ' 8 (8122) 56-56-56', '8-911-1234567', '8 (911) 12 345 67',
  7. '8-911 12 345 67', '8 (911) - 123 - 45 - 67', '+ 7 999 123 4567',
  8. '8 ( 999 ) 1234567', '8 999 123 4567'
  9. ];
  10.  
  11.  
  12.  
  13. $regexp = "/\\s?(8|[+]\\s?7)([-]?[)]?[(]?\\s?\\d[-]?[)]?[(]?\\s?){10}/";
  14.  
  15. foreach($correctNumbers as $number){
  16. $match = [];
  17. echo "Строка $number\n";
  18. if(preg_match($regexp, $number, $match)){
  19. echo "Найден номер $number\n\n";
  20. }
  21. else {
  22. echo "Номер не найден\n\n";
  23. }
  24. }
Success #stdin #stdout 0.01s 52488KB
stdin
Standard input is empty
stdout
Строка 84951234567
Найден номер 84951234567

Строка +74951234567
Найден номер +74951234567

Строка 8-495-1-234-567
Найден номер 8-495-1-234-567

Строка  8 (8122) 56-56-56
Номер не найден

Строка 8-911-1234567
Найден номер 8-911-1234567

Строка 8 (911) 12 345 67
Номер не найден

Строка 8-911 12 345 67
Найден номер 8-911 12 345 67

Строка 8 (911) - 123 - 45 - 67
Номер не найден

Строка + 7 999 123 4567
Найден номер + 7 999 123 4567

Строка 8 ( 999 ) 1234567
Номер не найден

Строка 8 999 123 4567
Найден номер 8 999 123 4567