我只是学习正则表达式,所以我可以在这个主题上使用一些关于电话号码验证的帮助。
我的手机输入分为一个选择列表,国家/地区代码前缀为+号。如果用户忘记删除电话号码中的前一个零,则不符合E.164国际标准(然而,有少数国家是此规则的例外,即意大利,挪威等)。但大多数人需要省略有效国际电话号码的零。
在我有限的研究中,我意识到全世界的电话号码格式差异很大。这意味着验证需要松散而不是严格,并允许将破折号,空格,括号,点和正斜杠的任意组合作为数字之间的分隔符。为了符合E.164标准,分隔符将被空字符串替换,以提供如下示例结果:+44755222333
这是我迄今为止尝试验证任何数字的尝试。
preg_match('/^(?:[0-9][.\-\(\)\s]*)/$', $phonenumber);
如何组合正则表达式来否定前面的零,即在字符串0或00的情况下返回错误匹配,以及验证任何可能的电话号码符号的灵活性?
真诚地,为什么
P.S只是为了检查。 “无零”规则是否也适用于NANP号码?我问这个是因为我认为这里的大多数人都熟悉那个电话号码系统。
答案 0 :(得分:2)
您可以使用preg_replace
去除前导零:
$phonenumber = preg_replace('/^0+/','',$phonenumber);
这将从字符串的前面删除一个或多个零。 (如果您只想删除一个零,则删除加号)。
希望有所帮助。
答案 1 :(得分:0)
这个怎么样:
$number = '044567565';
preg_match('/^0{0,2}(([0-9]*[.\-\(\)\s]*)*)/', $number, $match);
print_r($match);
结果:
array(
[0] => 044567565
[1] => 44567565
[2] =>
)