Biểu thức chính quy PHP: Không tìm thấy dấu phân cách cuối '^' trong


102

Tôi đã gặp một số rắc rối với cụm từ thông dụng.

Đây là mã của tôi

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

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

Tôi chạy nó và nhận được:

Cảnh báo: preg_match () [function.preg-match]: Không tìm thấy dấu phân cách cuối '^' trong


Bạn có thể sử dụng thư viện T-Regx , không cần dấu phân cách.
— Danon

Câu trả lời:


157

Chuỗi regex trong PHP cần dấu phân cách. Thử:

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

Ngoài ra, lưu ý rằng bạn có chữ o viết thường, không phải số 0. Ngoài ra, nếu bạn chỉ đang xác thực, bạn không cần nhóm chụp và có thể đơn giản hóa regex thành /^\d+$/.

Ví dụ: http://ideone.com/Ec3zh

Xem thêm: PHP - Dấu phân cách


2
Đối với những người không đọc tài liệu được liên kết, hãy sử dụng [và ]phân tách, nếu không bạn sẽ gặp xung đột với chính mẫu đó.
— greenoldman

23

Mẫu regex của bạn cần phải có dấu phân cách:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.