fork download
  1. <?php
  2.  
  3. $reg = "/(^[7-8+\\s]{1}[0-9-\\s\\(\\)]{10}[^а-я])/";
  4. $correctNumbers = [
  5. '02', '84951234567 позвать люсю', '849512345', '849512345678',
  6. '8 (409) 123-123-123', '7900123467', '5005005001', '8888-8888-88',
  7. '84951a234567', '8495123456a',
  8. '+1 234 5678901', /* неверный код страны */
  9. '+8 234 5678901', /* либо 8 либо +7 */
  10. '7 234 5678901',
  11. /* нет + */
  12. '84951234567', '+74951234567', '8-495-1-234-567',
  13. ' 8 (8122) 56-56-56', '8-911-1234567', '8 (911) 12 345 67',
  14. '8-911 12 345 67', '8 (911) - 123 - 45 - 67', '+ 7 999 123 4567',
  15. '8 ( 999 ) 1234567', '8 999 123 4567'
  16. ];
  17.  
  18. foreach ($correctNumbers as $check) {
  19.  
  20. $match = [];
  21. if (preg_match($reg, $check, $match)) {
  22. echo "ok {$match[0]} <br> ";
  23. }
  24. else {
  25. echo "<br>";
  26. }
  27. }
Success #stdin #stdout 0s 82944KB
stdin
Standard input is empty
stdout
<br>ok 84951234567  <br> <br>ok 849512345678 <br> ok 8 (409) 123- <br> <br><br>ok 8888-8888-88 <br> <br><br>ok +1 234 56789 <br> ok +8 234 56789 <br> ok 7 234 567890 <br> <br>ok +74951234567 <br> ok 8-495-1-234- <br> ok  8 (8122) 56 <br> ok 8-911-123456 <br> ok 8 (911) 12 3 <br> ok 8-911 12 345 <br> ok 8 (911) - 12 <br> ok + 7 999 123  <br> ok 8 ( 999 ) 12 <br> ok 8 999 123 45 <br>