RegEx pour numéro de téléphone mobile International valide [dupliquer]

cette question a déjà une réponse ici:

J'utilise Clickatell pour envoyer des Smse aux téléphones mobiles des clients.

est-il une expression régulière standardisée pour tous numéros de téléphone mobile valides ,par exemple + 27 123 4567? J'aurais bien fait la mienne, mais je m'inquiète de rater un format de numéro de téléphone obscur et valide.

20
demandé sur Petrus Theron 2011-02-21 16:09:01

6 réponses

après avoir enlevé tous les caractères sauf " + "et les chiffres de votre entrée, cela devrait le faire:

^\+[1-9]{1}[0-9]{3,14}$

si vous voulez être plus précis avec les codes de pays voir cette question sur liste des numéros de téléphone codes de pays

cependant, j'essaierais de ne pas être trop stricte avec ma validation. Les utilisateurs sont très frustrés si on leur dit que leurs numéros valides ne sont pas acceptables.

22
répondu Jannie Theunissen 2017-05-23 12:26:35

même si vous écrivez une expression régulière qui correspond exactement au sous-ensemble" numéros de téléphone valides "à partir de chaînes, il n'y a aucun moyen de garantir (par le biais d'une expression régulière) qu'ils sont valides numéros de téléphone mobiles . Dans plusieurs pays, les numéros de téléphone mobile ne se distinguent pas des numéros de téléphone fixe Sans qu'il y ait au moins une recherche dans le plan des numéros, et dans certains cas, même cela n'aidera pas. Par exemple, en Suède, beaucoup de gens ont "porté" leurs régulier, un numéro de téléphone fixe vers leur téléphone mobile. C'est toujours le même numéro qu'ils avaient avant, mais maintenant il va à un téléphone mobile au lieu d'une ligne fixe.

étant donné que les numéros de téléphone valides ne sont composés que de chiffres, je doute que rouler les vôtres risquerait de manquer un cas obscur de numéro de téléphone au moins. Si vous voulez avoir un meilleur certitude, écrivez un générateur qui prend une liste des codes de pays, et requiert l'un d'entre eux au début de le numéro de téléphone correspondant à l'expression régulière générée.

5
répondu Michael Kjörling 2011-02-21 13:22:33
^\+[1-9]{1}[0-9]{7,11}$ 

l'Expression régulière ^\+[1-9]{1}[0-9]{7,11}$ ne correspond pas à" +290 8000 " et à des numéros valides similaires qui sont inférieurs à 8 chiffres.

les numéros les plus longs peuvent être un code de pays à 3 chiffres, un code régional à 3 chiffres, un numéro d'abonné à 8 chiffres, soit 14 chiffres.

2
répondu dave singer 2012-06-02 13:04:23

même s'il s'agit de numéros internationaux, Je voudrais que le code soit comme:

/^(\+|\d)[0-9]{7,16}$/;

comme vous pouvez avoir des numéros internationaux à partir de '00' aussi bien.

pourquoi je préfère 15 chiffres: http://en.wikipedia.org/wiki/E.164

2
répondu Nasaralla 2013-05-21 15:03:02

postant une note ici pour les utilisateurs regardant dans le futur. Le libphonenumber de Google est ce que vous voudriez probablement utiliser. Il y a des wrappers pour PHP, node.js, Java, etc. pour utiliser les données que Google a collecté et réduit les exigences pour la maintenance de grands tableaux de modèles regex à appliquer.

2
répondu Jacques Marneweck 2014-09-03 08:11:10

// Regex Vérifier Singapour valide les numéros mobiles

public static boolean isSingaporeMobileNo(String str) {
    Pattern mobNO = Pattern.compile("^(((0|((\+)?65([- ])?))|((\((\+)?65\)([- ])?)))?[8-9]\d{7})?$");
    Matcher matcher = mobNO.matcher(str);
    if (matcher.find()) {
        return true;
    } else {
        return false;
    }
}
0
répondu John 2014-03-12 06:58:32