Gần đây tôi đã phát hiện ra rằng một phương pháp tôi đã sử dụng để xác thực tính năng nhập của người dùng chấp nhận một số giá trị mà tôi không đặc biệt hài lòng. Tôi cần nó để chỉ chấp nhận số tự nhiên (1
, 2
, 3
, v.v.) mà không có ký tự không phải chữ số.Regex chỉ xác thực số tự nhiên?
Phương pháp của tôi trông như thế này:
function is_natural($str)
{
return preg_match('/[^0-9]+$/', $str) ? false : $str;
}
Vì vậy, nó là nghĩa vụ phải trả về false nếu nó tìm thấy bất cứ điều gì khác ngoài một số tự nhiên nói chung. Vấn đề là, nó chấp nhận chuỗi như "2.3"
và thậm chí "2.3,2.2"
Ý bạn là "số tự nhiên nhưng không có chữ số"? Bạn muốn các số không có [chữ số] (http://en.wikipedia.org/wiki/Numerical_digit) như thế nào? –
Regex đó sẽ không khớp với một điểm hoặc dấu phẩy. – Koraktor
tôi sử dụng 'filter_var': http://stackoverflow.com/a/6563394/2165415 thấy bài có –