2010-05-06 17 views

Trả lời

4

Có một cái nhìn here:

000..255:  ^([01][0-9][0-9]|2[0-4][0-9]|25[0-5])$ 
0 or 000..255: ^([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])$ 
3

Giải pháp đơn giản nhất sẽ lấy số lượng, chuyển đổi sang một số nguyên và sau đó kiểm tra rằng đó là giá trị được < = 255. Nhưng nếu bạn thực sự, thực sự muốn có một regex để làm điều đó, thì đây sẽ làm việc:

^([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5])$ 

Sửa cố định vì nó d không hoạt động trong mọi tình huống. Thành thật mà nói, đây là lý do tại sao bạn chỉ cần phân tích chuỗi thành số nguyên và kiểm tra giá trị số nguyên là < = 255.

+1

Điều đó có ** không ** khớp 150 đến 199 btw – YOU

+0

S.Mark: Cập nhật câu trả lời của tôi, cảm ơn :) –

1

Thực tế, bạn chỉ cần khớp 0-999 và chuẩn hóa các giá trị sau đó, nhưng .. .

/(25[0-5])|(2[0-4][0-9])|(1[0-9][0-9])|([0-9][0-9])|([0-9]))/ 
+0

Hoặc chỉ bắt bất kỳ số nguyên nào với/(\ d +) / –

16

tôi sẽ làm:

$n >= 0 && $n <= 255 

Regex là tốt nhưng họ có thể tránh được trong những trường hợp như thế này.

2

nhóm đầu tiên phù hợp với 0-99, thứ hai 100-199, 200-249 thứ ba, thứ tư 250-255

/[0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5]/ 
Các vấn đề liên quan