Expressions régulières PHP: aucun délimiteur de fin '^' trouvé dans


103

J'ai eu des problèmes avec les expressions régulières.

C'est mon code

$pattern = "^([0-9]+)$";

if (preg_match($pattern, $input))
   echo "yes";
else
   echo "nope";

Je le lance et obtient:

Attention: preg_match () [function.preg-match]: Aucun délimiteur de fin '^' trouvé dans


Vous pouvez utiliser la bibliothèque T-Regx , qui n'a pas besoin de délimiteurs.
Danon

Réponses:


158

Les chaînes de regex PHP ont besoin de délimiteurs. Essayer:

$numpattern="/^([0-9]+)$/";

Notez également que vous avez un o minuscule, pas un zéro. De plus, si vous venez de valider, vous n'avez pas besoin du groupe de capture et pouvez simplifier l'expression régulière en /^\d+$/.

Exemple: http://ideone.com/Ec3zh

Voir aussi: PHP - Délimiteurs


2
Pour ceux qui ne lisent pas les matériaux liés, utilisent [et ]délimiteurs, sinon vous rencontrez des conflits avec le modèle lui-même.
greenoldman

24

Votre modèle d'expression régulière doit être entre des délimiteurs:

$numpattern="/^([0-9]+)$/";

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.