File tree 2 files changed +29
-3
lines changed
2 files changed +29
-3
lines changed Original file line number Diff line number Diff line change @@ -43,8 +43,28 @@ public function testPhone() {
43
43
$ this ->assertFalse (UsValidation::phone ('(055) 999-9999 ' ));
44
44
$ this ->assertFalse (UsValidation::phone ('(155) 999-9999 ' ));
45
45
$ this ->assertFalse (UsValidation::phone ('(595) 999-9999 ' ));
46
- $ this ->assertFalse (UsValidation::phone ('(555) 099-9999 ' ));
47
- $ this ->assertFalse (UsValidation::phone ('(555) 199-9999 ' ));
46
+ $ this ->assertFalse (UsValidation::phone ('(213) 099-9999 ' ));
47
+ $ this ->assertFalse (UsValidation::phone ('(213) 199-9999 ' ));
48
+
49
+ // invalid area-codes
50
+ $ this ->assertFalse (UsValidation::phone ('1-(511)-999-9999 ' ));
51
+ $ this ->assertFalse (UsValidation::phone ('1-(379)-999-9999 ' ));
52
+ $ this ->assertFalse (UsValidation::phone ('1-(962)-999-9999 ' ));
53
+ $ this ->assertFalse (UsValidation::phone ('1-(295)-999-9999 ' ));
54
+ $ this ->assertFalse (UsValidation::phone ('1-(555)-999-9999 ' ));
55
+
56
+ // invalid exhange
57
+ $ this ->assertFalse (UsValidation::phone ('1-(222)-511-9999 ' ));
58
+
59
+ // invalid phone number
60
+ $ this ->assertFalse (UsValidation::phone ('1-(222)-555-0199 ' ));
61
+ $ this ->assertFalse (UsValidation::phone ('1-(222)-555-0122 ' ));
62
+
63
+ // valid phone numbers
64
+ $ this ->assertTrue (UsValidation::phone ('1-(369)-333-4444 ' ));
65
+ $ this ->assertTrue (UsValidation::phone ('1-(973)-333-4444 ' ));
66
+ $ this ->assertTrue (UsValidation::phone ('1-(313)-555-9999 ' ));
67
+ $ this ->assertTrue (UsValidation::phone ('1-(222)-555-0299 ' ));
48
68
49
69
$ this ->assertTrue (UsValidation::phone ('1 (222) 333 4444 ' ));
50
70
$ this ->assertTrue (UsValidation::phone ('+1 (222) 333 4444 ' ));
Original file line number Diff line number Diff line change @@ -31,7 +31,13 @@ class UsValidation {
31
31
* @return boolean
32
32
*/
33
33
public static function phone ($ check ) {
34
- $ pattern = '/^(?:\+?1)?[-. ]? \\(?[2-9][0-8][0-9] \\)?[-. ]?[2-9][0-9]{2}[-. ]?[0-9]{4}$/ ' ;
34
+ $ pattern = '/^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|3[02-689][0-9]|9[02-57-9][0-9]|[246-8][02-46-8][02-46-9])\s*\) ' ;
35
+ $ pattern .= '|(55[0-46-9]|5[0-46-9][5]|[0-46-9]55|[2-9]1[02-9]|[2-9][02-8]1|[2-46-9][02-46-8][02-46-9]))\s*(?:[.-]\s*)?) ' ;
36
+ $ pattern .= '(?!(555(?:\s*(?:[.|\-|\s]\s*))(01([0-9][0-9])|1212))) ' ;
37
+ $ pattern .= '(?!(555(01([0-9][0-9])|1212))) ' ;
38
+ $ pattern .= '([2-9]1[02-9]|[2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*) ' ;
39
+ $ pattern .= '?([0-9]{4}) ' ;
40
+ $ pattern .= '(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$/ ' ;
35
41
return (bool )preg_match ($ pattern , $ check );
36
42
}
37
43
You can’t perform that action at this time.
0 commit comments