2017-01-08 12 views
0

ドイツ語の形式の文字列から電話番号を取得しようとしています。しかし、私は完全に実行することはありません。入力テキストは、数字だけでなく多くの内容を含む完全なHTMLページです。ドイツ語の電話番号形式の正規表現

可能なフォーマット:私が試してみました

(06442) 3933023  
(02852) 5996-0  
(042) 1818 87 9919 
06442/3893023 
06442/38 93 02 3  
06442/3839023 
042/ 88 17 890 0  
+49 221 549144 – 79 
+49 221 - 542194 79 
+49 (221) - 542944 79 
0 52 22 - 9 50 93 10 
+49(0)121-79536 - 77 
+49(0)2221-39938-113 
+49 (0) 1739 906-44 
+49 (173) 1799 806-44 
0173173990644 
0214154914479 
02141 54 91 44 79 
01517953677 
+491517953677 
015777953677 
02162 - 54 91 44 79 
(02162) 54 91 44 79 

$regex = '~(?:\+?49|0)(?:\s*\d{3}){2}\s*\d{4,10}~'; 
if(preg_match_all($regex, $input_imprint , $matches)){ 
    print_r($matches); 
} 

しかし、それはほんの数形式と一致していません。私は、このリンク:-(

+0

すべて記載されているフォーマットが有効である質問へのJavaがあります – chris85

答えて

1
[0-9]*\/*(\+49)*[ ]*(\([0-9]+\))*([ ]*(-|–)*[ ]*[0-9]+)* 

チェックそれを行うには考えていません:。https://regex101.com/r/CAVex8/1

は、いくつかの偽陽性を導入することを

+0

では? ([0] => Array([0] => [1] => [2] => [3])このようにして、 => [10] => [11] => [12] => [13] => [4] => [5] => [6] => [7] => [8] => [9] => [14] => [15] => [16] => [17] => 08335 [18] => [19] =>/99 99 99 .......しかし、戻る08335/99 99 99または08335999999またはそのようなもの。 – Mann87

+0

ソーステキストは、例えば、次のようになります。これは大きなテストです。08331/99 99 99は数字です – Mann87

+0

ソーステキストは '02141 54 91 44 79と0 52 22 - 9 50 93 10 2つの別々の電話番号として正規表現を使用して完全に一致しないかもしれない連絡先番号です。 HTML全体をチェックするのではなく、個々のタグに分割して番号を確認することができます。また、一致するセグメントの合計長さが標準ドイツ語の電話番号の長さ以上であるかどうかを確認することもできます。与えられた問題はあまりにも多くのエッジケースを持っており、試行錯誤によって1つずつ解決できます。また、あなたは[this](http://www.phpliveregex.com)が役立つことがあります。 –

関連する問題