Parse internazionali numeri di telefono da pagine web

c# html-agility-pack phone-number regex

Domanda

Sto usando HtmlAgilityPack per analizzare le pagine web. una volta caricato il documento, voglio estrarre i numeri di telefono possibili da HTML. Attualmente, sto usando alcune regex per questo scopo. Ho il seguente codice che controlla la corrispondenza dei numeri di telefono nella pagina web

    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);

dove doci è HtmlDocument astrazione di HtmlDocument da html agility pack. Il problema è che non riesce ad abbinare alcuni numeri di telefono come 08450 211 211 e +44 (0) 1246 733 000 .

Esiste un'espressione regolare generica che è più adatta quando si esegue la scansione di siti Web e consente la corrispondenza della maggior parte dei numeri di telefono internazionali?

Risposta accettata

Non è possibile abbinare quei numeri di telefono ( 08450 211 211 e +44 (0) 1246 733 000 ) perché l' 08450 211 211 semplicemente non li corrisponde.

La prima cosa che devi fare quando scrivi un'espressione regolare è identificare il modello che vuoi abbinare .

Quindi, il mio suggerimento è di scrivere un elenco dei diversi formati di numeri di telefono , aggiornare la tua domanda e poi saremo in grado di aiutarti. Altrimenti creerò sempre un nuovo numero di telefono che la tua espressione regolare potrebbe non corrispondere, o si abbinerà più di quanto desideri.

Ecco una espressione regolare che corrisponderà ai numeri di telefono sopra indicati:

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

Modificare:

Secondo il tuo commento, vorrei semplicemente usare questa espressione regolare, e quindi rimuovere quelli che non sono numeri di telefono:

(?:\+\d+\s+\(\d+\)\s+)?[\d -]+


Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché