簡體   English   中英

使用正則表達式和PHP分解數組中的電話號碼

[英]Breaking down phone number in array using regular expression and php

+91 9231665828  +91 9231665828
+91-9231675067  +91-9231675067
+919231665794   +919231665794
91 9231675653   91 9231675653
91-9231675067   91-9231675067
919231665794    919231665794
0 9231675653    0 9231675653
0-9231665808    0-9231665808
09231665808     09231665808

我設置了這樣的電話號碼,我想按數組細分這些號碼:

Array
(
    [0] => +91 9231665828
    [1] => +91-9231675067
    [2] => +919231665794
    [3] => 91 9231675653
    [4] => 91-9231675067
    [5] => 919231665794
    [6] => 0 9231675653
    [7] => 0-9231665808
    [8] => 09231665808
    [9] => +91 9231665828
    [10] => +91-9231675067
    [11] => +919231665794
    [12] => 91 9231675653
    [13] => 91-9231675067
    [14] => 919231665794
    [15] => 0 9231675653
    [16] => 0-9231665808
    [17] => 09231665808
)

我寫了一些正則表達式,但是沒有用。

/\\n|\\s(?=(\\+91(?:-|\\s|)|91(?:-|\\s|)|0(?:-|\\s|))?[7-9][0-9]{9}$)/

我想要正確的正則表達式。

為什么不更籠統並保持簡單?

\+?\d+[ -]?\d+

這將與您的所有示例“電話號碼”匹配,並將字符串分成一個數組。 但是,如果您要驗證的數字是不同的RegEx。


實施例/試驗:

<?php

$string = "+91 9231665828 +91 9231665828
+91-9231675067  +91-9231675067
+919231665794   +919231665794
91 9231675653   91 9231675653
91-9231675067   91-9231675067
919231665794    919231665794
0 9231675653    0 9231675653
0-9231665808    0-9231665808
09231665808  09231665808";

if(preg_match_all('/\+?\d+[ -]?\d+/', $string, $matches))
{
    echo '<pre>';
    print_r($matches[0]);
    echo '</pre>';
}

?>

結果是:

Array
(
    [0] => +91 9231665828
    [1] => +91 9231665828
    [2] => +91-9231675067
    [3] => +91-9231675067
    [4] => +919231665794
    [5] => +919231665794
    [6] => 91 9231675653
    [7] => 91 9231675653
    [8] => 91-9231675067
    [9] => 91-9231675067
    [10] => 919231665794
    [11] => 919231665794
    [12] => 0 9231675653
    [13] => 0 9231675653
    [14] => 0-9231665808
    [15] => 0-9231665808
    [16] => 09231665808
    [17] => 09231665808
)

使用此模式^(\\+?\\d+[ -]?\\d+)注意錨點^
演示

我同意tenub的觀點 ,在這里驗證是一項單獨的任務。 但是,您確實需要確保引擎知道一個數字在哪里結束而另一個在哪里開始:

\+?\b\d{1,2}[ -]?\d{9,10}\b

編輯:我不知道重復數字的重要性,但是如果您只希望每行中的第一個數字,則可以在模式開頭添加^

^\+?\b\d{1,2}[ -]?\d{9,10}\b

暫無
暫無

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

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