Parse International Números de teléfono de páginas web

c# html-agility-pack phone-number regex

Pregunta

Estoy usando HtmlAgilityPack para analizar las páginas web. una vez que se haya cargado el documento, quiero extraer los posibles números de teléfono de HTML. Actualmente, estoy usando alguna expresión regular para este propósito. Tengo el siguiente código que verifica la coincidencia de números de teléfono en la página 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);

donde doci es HtmlDocument abstraction from html agility pack. El problema es que no coincide con algunos números de teléfono como 08450 211 211 y +44 (0) 1246 733 000 .

¿Existe una expresión de expresión regular genérica que sea más adecuada cuando se rastrean sitios web y permite la coincidencia de la mayoría de las formas de números de teléfono internacionales?

Respuesta aceptada

No puede coincidir con esos números de teléfono ( 08450 211 211 y +44 (0) 1246 733 000 ) porque su expresión regular simplemente no coincide con ellos.

Lo primero que debe hacer al escribir una expresión regular es identificar el patrón que desea hacer coincidir .

Por lo tanto, mi sugerencia es escribir una lista de los diferentes formatos de números de teléfono , actualizar su pregunta y luego podremos ayudarlo. De lo contrario, siempre crearé un nuevo número de teléfono que su expresión regular podría no coincidir, o simplemente coincidirá con más de lo que usted desea.

Aquí hay una expresión regular que coincidirá con los números de teléfono anteriores:

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

Editar:

De acuerdo con su comentario, solo usaría esta expresión regular y luego eliminaría las que no son números de teléfono:

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


Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué