9
votes

Regex - Numéro de téléphone simple

Je sais qu'il y a une tonne d'exemples de regex sur la manière de faire correspondre certains types de numéro de téléphone. Pour mon exemple, je veux juste autoriser des chiffres et quelques caractères spéciaux. J'ai de nouveau des difficultés à atteindre cela.

Les numéros de téléphone qui doivent être autorisés peuvent prendre ces formulaires xxx

Je veux juste quelque chose qui permettra [0-9] et aussi des caractères spéciaux "(", ') ', et' - '

jusqu'à présent, mon expression ressemble à ceci xxx

Je sais que c'est faux mais je crois que cela signifie que cela signifie que cela signifie que ceci 9 ou permettre aux caractères (,) et -.


2 commentaires

Je recommanderais également la recherche des personnages. Et + depuis plusieurs fois, ces deux sont utilisés soit pour entrer des codes de pays ou juste un style différent. Une autre option que j'ai utilisée auparavant est de dépasser tous les non chiffres, puis vérifiez simplement les chiffres de la longueur correcte. En outre, je suis content que vous fassiez cela. Est-ce tellement ennuyant pour de nombreux sites Web ou programmes qui vous obligent à vous formater spécifiquement lorsque l'ordinateur peut facilement vérifier!


Dupliqué possible de Une regex complète pour la validation de numéro de téléphone


7 Réponses :


5
votes

Ceci correspond à ce que vous voulez des chiffres, (,) et -

/^[0-9()-]+$/


2 commentaires

Pour cela, je veux permettre aux espaces et au signe + m aussi. Comme +91 555 555 555. Pouvez-vous me suggérer le bon.


C'est presque ce que je veux, mais je veux faire la fin de la fin avec un numéro



1
votes

Pourquoi avez-vous un ^ là-bas? Je pense que vous voulez dire [() -] Cela vous permet d'avoir deux chaînes de démarrage dans la regex, qui ne correspondra jamais.

Aussi, \ d est un joli raccourci pour [0-9] . Ils sont exactement les mêmes.

En outre, cela ne correspond à un tas de nombres que, puis un tas de ( ou ) ou - . Quelque chose comme: 1294819024 () () () () () -------- () - correspondrait. Je pense que vous voulez que le tout soit capable de répéter, quelque chose comme: ^ (\ d * [(((() -] *) * $ . Maintenant, vous pouvez correspondre à des séquences répétées de ceci.

Maintenant, il est important de noter que * est généralement inefficace, nous pouvons réaliser que nous voulons simplement correspondre à n'importe quel chiffre et la ponctuation souhaitée: [\ d () -] *


1 commentaires

Le [^ () -] ne signifie-t-il pas de ne pas correspondre à ces personnages?



5
votes
^(\(\d{3}\)|\d{3})-?\d{3}-?\d{4}$

\(\d{3}\)|\d{3} three digits with or without () - The simpler regex would be \(?\d{3}\)? but that would allow (555-5555555 and 555)5555555 etc.
An optional - followed by three digits
An optional - followed by four digits
Note that this would still allow 555555-5555 and 555-5555555 - I don't know if these are covered in your and so on part

1 commentaires

Merci c'est correct, je pense que ma question n'a pas été formulée correctement. Je n'ai pas besoin de désigner une longueur spécifique sur les chiffres pour permettre des numéros de téléphone étrangers, etc. Merci cependant.



0
votes

Pour les chiffres, vous pouvez utiliser \ d . Pour plus d'un chiffre, vous pouvez utiliser \ d {n} , où n est le nombre de chiffres que vous souhaitez correspondre. Certains caractères spéciaux doivent être échappés, par exemple \ ( correspondent (. Par exemple: \ (\ d {3} \) \ - d {4} correspondance (555) -555-5555.


0 commentaires

0
votes

Le deuxième carat (AFAIK) va briser tout ce que vous faites car cela signifie "début de chaîne".

Qu'est-ce que vous semblez demander pourquoi est donc:

  • Début de la chaîne, suivi de ...
  • Tout nombre de caractères numériques, suivi de ...
  • Début de la chaîne, suivi de ...
  • N'importe quel nombre de '(', ')' ou '-' caractères, suivi de ...
  • fin de chaîne

    qui ne fonctionnera pas même si ce deuxième carat ne fait rien, car vous ne comptez pas rien après le premier '(', ')' ou '-', et '-' et ne validera probablement qu'une chaîne vide si cela.

    vous voulez / ^ [0-9 () -] + $ / pour un motif très brut qui "fonctionne".


0 commentaires

0
votes

Si vous ne nous faites que du numéro, la meilleure solution consiste à supprimer tous les caractères non chiffres, puis à tester simplement pour voir si la longueur == 10.


0 commentaires

1
votes

^ [0-9 - + \ s] + $

06754654 +54654654 +546 546 5654 43534 + +09945 345 3453 45


0 commentaires