Ekspresi reguler PHP: Tidak ditemukan pembatas akhir '^' di

103

Saya mengalami masalah dengan ekspresi reguler.

Ini kode saya

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

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

Saya menjalankannya dan mendapatkan:

Peringatan: preg_match () [function.preg-match]: Tidak ditemukan pemisah akhir '^' di

Fingerman
sumber
Anda dapat menggunakan pustaka T-Regx , yang tidak membutuhkan pembatas.
Danon

Jawaban:

158

String PHP regex membutuhkan pembatas. Mencoba:

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

Juga, perhatikan bahwa Anda memiliki huruf kecil o, bukan nol. Selain itu, jika Anda hanya memvalidasi, Anda tidak memerlukan grup penangkapan, dan dapat menyederhanakan regex menjadi /^\d+$/.

Contoh: http://ideone.com/Ec3zh

Lihat juga: PHP - Pembatas

Kobi
sumber
2
Bagi mereka yang tidak membaca materi terkait, penggunaan [dan ]pembatas, jika tidak, Anda akan mengalami konflik dengan pola itu sendiri.
greenoldman
24

Pola regex Anda harus berada dalam pembatas:

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

Anda dapat menggunakan pustaka T-Regx , yang tidak membutuhkan pembatas

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