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 []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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.