J'ai des problèmes avec l'expression régulière des numéros de téléphone. J'essaie de créer une expression rationnelle aussi large que possible pour les numéros de téléphone européens. Le numéro de téléphone peut commencer par un + ou avec deux 0 en tête, suivi d'un nombre compris entre 0 et 40. ce n'est pas nécessaire cependant, donc cette première partie peut également être ignorée. Après cela, tout devrait être des nombres, groupés en paires d'au moins deux, avec un espace ou un - entre les groupes.

Le regex que j'ai rassemblé peut être trouvé ci-dessous.

/((\+|00)+[0-4]+[0-9]+)?([ -]?[0-9]{2,15}){1,5}/

Cela devrait correspondre aux structures suivantes

0031 34-56-78
0032123456789
0033 123 456 789
0034-123-456-789

+35 34-56-78
+36123456789
+37 123 456 789
+38-123-456-789
...

À quoi cela correspond aussi selon mon javascript

+32 a54b 67-0:

J'ai donc dû faire une erreur quelque part, mais je ne peux vraiment pas le voir. Toute aide serait appréciée.

6
Michiel Standaert 24 oct. 2011 à 16:02

3 réponses

Meilleure réponse

Le problème est que vous n'utilisez pas d'ancres ^ $ pour définir le début et la fin de la chaîne et que vous trouverez donc une correspondance n'importe où dans la chaîne.

/^((\+|00)+[0-4]+[0-9]+)?([ -]?[0-9]{2,15}){1,5}$/

Ajouter des ancres fera l'affaire. Pour en savoir plus sur ces méta-caractères, ici.

10
Marcus 24 oct. 2011 à 12:06

Mettez ^ au début du RegExp et $ à la fin.

1
rmtheis 21 août 2012 à 04:53

Essayez ceci, peut être peut vous aider.

if (ereg("^((\([0-9]{3}\) ?)|([0-9]{3}-))?[0-9]{3}-[0-9]{4}$",$var)) 
{
    $valid = true; 
}
1
pinaldesai 24 oct. 2011 à 12:13