2017-09-21 113 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。