Parse International numéros de téléphone à partir de pages Web

c# html-agility-pack phone-number regex

Question

J'utilise HtmlAgilityPack pour analyser les pages Web. une fois le document chargé, je souhaite extraire les numéros de téléphone possibles à partir de HTML. Actuellement, j'utilise des regex à cette fin. J'ai le code suivant qui vérifie la correspondance des numéros de téléphone sur la page 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);

doci est l'abstraction de HtmlDocument du pack d'agilité html. Le problème est qu’il ne correspond pas à certains numéros de téléphone comme le 08450 211 211 et le +44 (0) 1246 733 000 .

Existe-t-il une expression générique regex qui convient le mieux lors de l'exploration de sites Web et qui permet de faire correspondre la plupart des formes de numéros de téléphone internationaux?

Réponse acceptée

Vous ne pouvez pas faire correspondre ces numéros de téléphone ( 08450 211 211 et +44 (0) 1246 733 000 ) car votre expression rationnelle ne correspond tout simplement pas à eux.

La première chose à faire lors de l'écriture d'une expression régulière consiste à identifier le motif que vous souhaitez faire correspondre .

Ma suggestion est donc de dresser une liste des différents formats de numéros de téléphone , de mettre à jour votre question et de vous aider ensuite. Sinon, je créerai toujours un nouveau numéro de téléphone auquel votre regex pourrait ne pas correspondre, ou simplement plus que vous le souhaitez.

Voici une regex qui correspondra aux numéros de téléphone ci-dessus:

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

Modifier:

Selon votre commentaire, je voudrais simplement utiliser cette expression rationnelle, puis supprimer ceux qui ne sont pas des numéros de téléphone:

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



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi