Webページからの国際電話番号の解析

c# html-agility-pack phone-number regex

質問

私はHtmlAgilityPackを使ってウェブページを解析しています。ドキュメントがロードされたら、HTMLから可能な電話番号を抽出したいと思います。現在、私はこの目的のためにいくつかの正規表現を使用しています。私はウェブページの電話番号の一致をチェックする次のコードを持っています

    private static string phoneReg =
                @"[\+]{0,1}(\d{10,13}|[\(][\+]{0,1}\d{2,}[\13)]*\d{5,13}|\d{2,6}[\-]{1}\d{2,13}[\-]*\d{3,13})";
            private static Regex phoneRegex = new Regex(phoneReg, RegexOptions.IgnoreCase);
var phoneMatches = phoneRegex.Matches(doci.DocumentNode.InnerText);

dociはhtmlのHtmlDocumentパックからのHtmlDocument抽象です。問題は、 08450 211 211+44 (0) 1246 733 000ようないくつかの電話番号と一致しないことです。

ウェブサイトをクロールする際に最も適した正規表現が存在し、ほとんどの形式の国際電話番号のマッチングが可能ですか?

受け入れられた回答

あなたの正規表現は単純にそれらと一致しないので、あなたはそれらの電話番号( 08450 211 211+44 (0) 1246 733 000 )を一致させることはできません。

正規表現を書くときにまず行う必要があるのは、 一致させたいパターンを特定することです

だから、私の提案は、さまざまな電話番号の形式のリストを書き留めて、 あなたの質問を更新することです 、そして私たちはあなたを助けることができるでしょう。それ以外の場合は、正規表現が一致しない可能性のある新しい電話番号を常に作成します。

上記の電話番号と一致する正規表現を次に示します。

(?:\+\d+\s+\(\d+\)\s+)?\d{4,5}\s+\d{3}\s+\d{3}

編集:

あなたのコメントによると、私はこの正規表現を使用して、電話番号ではない正規表現を削除するだけです:

(?:\+\d+\s+\(\d+\)\s+)?\d{4,5}\s+\d{3}\s+\d{3}



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ