我有这个功能来检查我的电话号码:
function isValid( $what, $data ) {
switch( $what ) {
// validate a phone number
case 'phone_number':
$pattern = "/^[0-9-+]+$/";
break;
default:
return false;
break;
}
return preg_match($pattern, $data) ? true : false;
}
Run Code Online (Sandbox Code Playgroud)
我想改变那个正则表达式接受以下内容:) (chars like(800)和space.
所以例如这个数字将通过验证,现在没有通过:
+1(201)223-3213
让我们一步一步地构建正则表达式.还要考虑在匹配之前修剪空格.
\+?[0-9]+你可能想写,[0-9]*如果数字可以直接从括号中的一组开始(\[0-9]+\)?.假设只允许一个这样的组[0-9-]*最后一个字符必须是数字[0-9],此处不允许使用连字符
^\+?[0-9]+(\([0-9]+\))?[0-9-]*[0-9]$
Run Code Online (Sandbox Code Playgroud)在这里查看结果.修剪空间看起来像$trimmed = str_replace(' ', '', $pattern);.