Expressões regulares PHP: Nenhum delimitador final '^' encontrado em

102

Tenho tido alguns problemas com expressões regulares.

Este é o meu código

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

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

Eu executo e obtenho:

Aviso: preg_match () [function.preg-match]: Nenhum delimitador final '^' encontrado em

fingerman
fonte
Você pode usar a biblioteca T-Regx , que não precisa de delimitadores.
Danon,

Respostas:

157

Strings PHP regex precisam de delimitadores. Experimentar:

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

Além disso, observe que você tem um o minúsculo, não um zero. Além disso, se você está apenas validando, não precisa do grupo de captura e pode simplificar o regex para /^\d+$/.

Exemplo: http://ideone.com/Ec3zh

Veja também: PHP - Delimitadores

Kobi
fonte
2
Para quem não lê materiais vinculados, use delimitadores [e ], caso contrário, você entrará em conflito com o próprio padrão.
greenoldman
23

Seu padrão de regex precisa estar em delimitadores:

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

Você pode usar a biblioteca T-Regx , que não precisa de delimitadores

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