preg_match: rien à redire / pas de match
Je suis en utilisant ceci: if(!preg_match('/^+[0-9]$/', '+1234567'))
et j'obtiens:
Warning: preg_match()
[function.preg-match]: Compilation
échec: rien à redire à un décalage de 1
des idées pourquoi?
mise à jour: Maintenant, en utilisant cette: if(!preg_match('/^\+[0-9]$/', '+1234567'))
et je suis pas du match.
des idées pourquoi?
OriginalL'auteur Hailwood | 2010-07-11
Vous devez vous connecter pour publier un commentaire.
+
est un caractère spécial qui indique 1 ou plus du caractère précédent, et de ne pas s'échapper, vous êtes à appliquer pour l'accent circonflexe. échapper avec\
et il correspondra à un littéral signe plus.EDIT:
La raison pour laquelle il n'a pas de match est parce que vous avez spécifié 1 chiffres de 0 à 9 et de la fin de la chaîne avec
$
. Vous avez besoin de faire une quantité variable de chiffres.Version plus courte:
Hailwood, vous ne devez pas supprimer le vieux problème, mais doit montrer les deux ensemble. (juste édité pour le faire).
Aussi, le problème actuel est de corriger les comportements - vous demandons de regex pour correspondre à un unique plus le, un unique 0..9, puis de trouver la fin de la position de la ligne, qui votre entrée ne fait pas. Pour correspondre à votre entrée fourni que vous voulez
^\+[0-9]+$
ou^\+[0-9]{7}$
ou similaire.Merci, va garder cela à l'esprit @meder Acclamations, Parfait. je connais sur le d du pavillon, mais utilisez [0-9] pour la préférence personnelle, car je pense que cela augmente la lisibilité d'un coup d'oeil, il y a toute vitesse avantages à utiliser le drapeau vs [0-9]?
OriginalL'auteur meder omuraliev
'/^\+[0-9]$/'
signifie que le début de la ligne doit être signe plus folowed par un numéro, puis de la fin de la ligne.'/^\+[0-9]+$/'
signifie que le début de la ligne doit être signe plus folowed par un un ou plusieurs numéros, puis à la fin de la ligne.OriginalL'auteur Davor Lucic