2017-09-21 82 views
1

我一直在尝试验证电话号码的格式为。我已成功删除所有特殊字符的电话号码,但如果输入的电话号码是+15555555555,则该号码在号码的开始处仍包含“1”。无论如何删除+1和特殊字符?从电话号码中删除特殊字符和+1

我目前的正则表达式是preg_replace('/^1|\D/', "", +15555555555);

任何帮助,将不胜感激!

+0

'str_replace函数( '+ 1', '',$数);'---,但是,从另一方面+ {countrycode} {number}格式是国际电信联盟的标准化建议 - - [E.164](https://en.wikipedia.org/wiki/E.164)标准,因此可能保留它? –

+0

好吧,为了完整性,我想保留数字10位。尽管我可能会这样做。感谢您的反馈! – ch0chi

回答

3

您不需要正则表达式。

str_replace('+1', '', $string) 

会做到这一点。但要解释为什么您的正则表达式当前失败,您的字符串不会以1开头,它始于+1,因此^1不匹配。

演示当前使用的:https://regex101.com/r/kwwp1r/1/

一个可能的正则表达式溶液的演示:https://regex101.com/r/kwwp1r/2/

^\+1 
+0

太棒了,谢谢!假设某人输入了15555555555,是否有一个正则表达式或str_replace方法可以用来检查数字开头的“+1”和“1”? – ch0chi

+0

是的,'^ \ +?1'会使'+'成为可选项。电话号码是不是以'1'开头的规则? – chris85

+0

@ ch0chi ...但这需要一个'preg_replace'。 –

1

只需更换+1从中

$phone_num = "+15555555555"; 

$phone_num = preg_replace('/\+1/','',$phone_num); 

echo $phone_num; 

或者你可以使用str_replace函数( '+ 1', '',$ PHONE_NUM),或。我总是习惯使用preg_replace。