簡體   English   中英

向正則表達式添加否定語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM