Je devrais valider un numéro de téléphone. Mes contraintes sont comme ça.
- Les numéros de téléphone ne doivent pas contenir d’alphabets (bien que ce soit idiot;))
- Le numéro de téléphone doit comporter au minimum 10 caractères et au maximum 17 caractères.
- le numéro de téléphone doit accepter "-", ".", "+". (non obligatoire)
- "-" ou "." si présent, ne doit pas être en début ou en fin de numéro.
- Un seul "+" est autorisé et cela aussi au début du nombre
- Le numéro de téléphone ne doit pas être valide si tous les caractères entrés sont "-" ou "."
Jusqu'à présent, j'utilise l'expression suivante.
var phoneExpression = /^(?=.*[0-9])([0-9.-+ ()/]+)*$/;
bien que cela ne réponde pas à toutes mes contraintes. S'il vous plaît me fournir un bon regular expression
.
Réponses:
1 pour la réponse № 1Celui-ci devrait répondre à toutes les contraintes saufpour 10 caractères et maximum 17 caractères car il ne comptera pas le + chant s'il est présent. Si vous en avez besoin, vous devez dupliquer la regex avec une alternance |
^+?[0-9][0-9.-]{8,15}[0-9]$
1 pour la réponse № 2
Ceci répond à toutes vos contraintes écrites, en comptant le + comme caractère si présent:
(?=^.{10,17}$)+?d[d.-]+d$
Si vous souhaitez ajouter des parenthèses et des espaces, placez-les simplement dans la classe de caractères. Je soupçonne que cela n’est pas suffisant car votre description acceptera des constructions qui ne sont clairement pas des numéros de téléphone.