2011-10-23 22 views
17

Tôi cần một biểu thức chính quy mà xác nhận cho một số với chiều dài 4, 5, 6biểu hiện thường xuyên cho số với chiều dài 4, 5 hoặc 6

Tôi đã từng^[0-9] {4} để xác nhận cho một số 4, nhưng tôi không biết làm thế nào để bao gồm xác nhận cho 5 và 6.

+0

Hãy thử '[0-9] {4,6}' –

+0

Cảm ơn bạn nó giải quyết vấn đề của tôi, xin vui lòng thêm nó như là một câu trả lời –

+1

Bạn nên luôn luôn xác định ngôn ngữ bạn đang sử dụng regexes của bạn từ. Trong khi đối với các regex đơn giản, nó không thể là quan trọng, phức tạp hơn phụ thuộc vào ngôn ngữ bắt đầu. Nó thậm chí còn được viết trong thẻ. – xanatos

Trả lời

44

Hãy thử điều này:

^[0-9]{4,6}$ 

{4,6} = khoảng từ 4 đến 6 ký tự, bao gồm.

+1

Xin chào, tôi cần xác thực chiều dài chỉ bằng 4 hoặc 6. Làm thế nào tôi có thể đạt được điều này. Nếu người dùng có chiều dài là 5 số. Nó sẽ cung cấp cho lỗi wrt để mô hình. Vui lòng giúp – Hema

1

Nếu ngôn ngữ bạn sử dụng chấp nhận {}, bạn có thể sử dụng [0-9]{4,6}.

Nếu không, bạn sẽ phải sử dụng [0-9][0-9][0-9][0-9][0-9]?[0-9]?.

9

Lưu ý rằng, như được viết, giải pháp của Peter sẽ "chấp nhận" 0000. Nếu bạn muốn xác nhận số giữa 1000999999, thì đó là một vấn đề khác :-)

^[1-9][0-9]{3,5}$ 

ví dụ sẽ chặn chèn 0 vào đầu của chuỗi.

Nếu bạn muốn chấp nhận 0 padding, nhưng chỉ lên đến một lengh của 6, do đó 001000 là hợp lệ, sau đó nó trở nên phức tạp hơn. Nếu chúng ta sử dụng nhìn về phía trước thì chúng ta có thể viết một cái gì đó giống như

^(?=[0-9]{4,6}$)0*[1-9][0-9]{3,}$ 

này kiểm tra đầu tiên nếu chuỗi có chiều dài 4-6 (?=[0-9]{4,6}$), sau đó bỏ qua 0s 0* và tìm kiếm khác không [1-9] tiếp theo ít nhất 3 chữ số [0-9]{3,}.

+0

Về regex thứ hai của bạn: '^ (? = [0-9] {4,6} $) 0 * [1-9] [0-9] {3,} $' - The '{3,} 'sai yêu cầu ba chữ số qua' [1-9] đầu tiên ', và do đó nó sẽ không khớp với các số như:' 000001' và '0123'. Vì lookahead của bạn đã đảm bảo yêu cầu độ dài, '{3,}' có thể được viết như một ngôi sao '*'. (Hoặc là hành vi này bạn dự định?) – ridgerunner

+0

@ridgerunner Như tôi đã viết, số lượng tối thiểu là 1000, vì vậy 1-9 và ba chữ số miễn phí. Vì vậy, nó là chính xác. Các regex này cố gắng kiểm tra giá trị và không chỉ cú pháp. – xanatos

6

[0-9]{4,6} có thể được rút ngắn xuống còn \d{4,6}

Các vấn đề liên quan