Expresiones regulares de PHP: no se encuentra el delimitador final '^' en

103

He tenido algunos problemas con las expresiones regulares.

Este es mi codigo

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

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

Lo ejecuto y obtengo:

Advertencia: preg_match () [function.preg-match]: No se encontró el delimitador final '^' en

dedo
fuente
Puede usar la biblioteca T-Regx , que no necesita delimitadores.
Danon

Respuestas:

158

Las cadenas de expresiones regulares de PHP necesitan delimitadores. Tratar:

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

Además, tenga en cuenta que tiene una o minúscula, no un cero. Además, si solo está validando, no necesita el grupo de captura y puede simplificar la expresión regular a /^\d+$/.

Ejemplo: http://ideone.com/Ec3zh

Ver también: PHP - Delimitadores

Kobi
fuente
2
Para aquellos que no leen los materiales vinculados, use [y ]delimitadores, de lo contrario se encontrará con conflictos con el patrón en sí.
greenoldman
24

Su patrón de expresiones regulares debe estar en delimitadores:

$numpattern="/^([0-9]+)$/";
David Powers
fuente
1

Puede usar la biblioteca T-Regx , que no necesita delimitadores

pattern('^([0-9]+)$')->match($input);
Danon
fuente