[英]adding negative statement to regex
我正在嘗試檢查使用正則表達式時是否存在這樣的電話號碼。
(001)33992292
所以,我用過
if(preg_match("/[0-9\(\)]+/", $row)){
//is phone number
}
但是,問題在於,包含數字的字符串也會被傳遞,例如foo134@yahoo.com
,那么如何評估電話號碼並將@
字符排除在一起?
UDPATED /^(\\(\\d+\\))*\\s?(\\d+\\s*)+$/
你錯過了開始字符串^
符號和結束字符串$
sign,還有你的正則表達式是錯誤的,因為5545()4535也會通過匹配
您需要在正則表達式中使用錨點 ,正確的語法是:
if(preg_match('~^\(\d{3}\) *\d{8}$~', $row)) { ... }
電話號碼因人們出錯而臭名昭着 - 人們指的是程序員。
例如,這些都是編寫電話號碼的“常見”方式:
(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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.