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

fingerman
la source
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

Kobi
la source
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]+)$/";
David Powers
la source