我正在尝试检查使用正则表达式时是否存在这样的电话号码。
(001)33992292
所以,我用了
if(preg_match("/[0-9\(\)]+/", $row)){
//is phone number
}
但是,问题在于,包含数字的字符串也会被传递,例如foo134@yahoo.com
,那么我如何评估电话号码并排除@
字符串在一起?
答案 0 :(得分:1)
<强> UDPATED
/^(\(\d+\))*\s?(\d+\s*)+$/
你错过了开始字符串^
符号和结束字符串$
符号,还有你的正则表达式错误了
因为5545()4535也会通过比赛
答案 1 :(得分:1)
您需要在正则表达式中使用anchors,正确的语法是:
if(preg_match('~^\(\d{3}\) *\d{8}$~', $row)) { ... }
答案 2 :(得分:1)
电话号码因人们出错而臭名昭着 - 人们指的是程序员。
例如,这些都是&#34;常见的&#34;写电话号码的方法:
(001) 33992292
001 33992292
00133992292
001 3399 2292
(001) 3399-2292
更安全的方法是删除所有不是数字并查看长度的内容:
$phonenumber = "(001) 33992292";
$phonenumber = preg_replace("/[^0-9,.]/", "", $phonenumber );
if (strlen($phonenumber) == 11) {
// do thing
}