簡體   English   中英

用於檢測PHP中錯誤電話號碼的正則表達式

[英]Regular expression to detect faulty phone numbers in PHP

我正在嘗試構建一個正則表達式以檢測錯誤的電話號碼並將其替換為原始電話號碼。 我有電話號碼,並且在帶有文本(帶有html標簽)的文本字段中是錯誤的號碼(出於某種原因,該網站的用戶喜歡在號碼之間放置各種字符)。 這是我正在使用的方法,在大多數情況下都可以正常使用,但並非全部:

$phone = '0888123123';
$text = 'Some html text with variants of the phone number in wrong format - 
0~8~8~8~1~2~3~1~2~3
0.8.8.8.1.2.3.1.2.3
0 8 8 8 1 2 3 1 2 3
0888-123-123
The last format does not work!';

preg_match_all('/('.implode('[\D]+', str_split($phone)).')/i', strip_tags($text), $matches);

if (count($matches) > 0) {
   foreach($matches as $value) {
      $text = str_replace($value, $phone, $text);
   }
}

我嘗試在數字之間找到任何非數字字符,但僅當此非數字字符在所有數字之間(即0.8.8.8.1.2.3.1.2.3)時,它才有效,但與0888-123-123不匹配。 此正則表達式中是否有其他內容可以捕獲其余案例?

[^\d\n]

您可以嘗試一下。請參閱演示。

http://regex101.com/r/nB2lL9/6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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