Wyrażenia regularne PHP: nie znaleziono separatora końcowego „^” w

103

Mam problemy z wyrażeniami regularnymi.

To jest mój kod

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

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

Uruchamiam go i otrzymuję:

Ostrzeżenie: preg_match () [function.preg-match]: nie znaleziono separatora końcowego „^” w

Fingerman
źródło
Możesz użyć biblioteki T-Regx , która nie potrzebuje ograniczników.
Danon,

Odpowiedzi:

158

Łańcuchy wyrażeń regularnych PHP wymagają separatorów. Próbować:

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

Zauważ też, że masz małą literę o, a nie zero. Ponadto, jeśli tylko weryfikujesz, nie potrzebujesz grupy przechwytywania i możesz uprościć wyrażenie regularne do /^\d+$/.

Przykład: http://ideone.com/Ec3zh

Zobacz też: PHP - ograniczniki

Kobi
źródło
2
Dla tych, którzy nie czytają powiązanych materiałów, użyj [i ]ograniczników, w przeciwnym razie napotkasz konflikty z samym wzorem.
greenoldman
24

Twój wzorzec wyrażenia regularnego musi zawierać separatory:

$numpattern="/^([0-9]+)$/";
David Powers
źródło