2012-05-09 41 views
25

Tôi đang cố gắng viết cụm từ thông dụng sẽ được sử dụng trên hộp văn bản để xác thực nội dung của nó để xem nó có nằm trong khoảng từ 1 đến 35 hay không. hộp văn bản có thể được bất cứ điều gì: số, alpha, dấu chấm câu, không gian màu trắng, vv đây là những gì tôi có cho đến nay:Đặt số ký tự tối thiểu/tối đa cho bất kỳ ký tự nào sử dụng cụm từ thông dụng

^[:;,\[email protected]âéè'.\s]{1,35}$ 

Như bạn thấy, tôi phải ra khỏi danh sách tất cả các nhân vật. Có cách nào dễ hơn để nói "tất cả" ký tự?

Trả lời

36

Như thế này: .

Các . nghĩa là bất kỳ nhân vật ngoại trừ dòng mới (mà đôi khi là nhưng thường không được bao gồm, kiểm tra hương vị regex của bạn).

Bạn có thể viết lại biểu thức của mình dưới dạng ^.{1,35}$, phải khớp với bất kỳ dòng nào có độ dài 1-35.

+2

Trong nhiều công cụ regex, '.' không * không * phù hợp với một dòng mới, nhưng không phù hợp với bất kỳ ký tự khác (trừ khi bạn sử dụng một để nói cách khác). Trong trường hợp đó, bạn có thể thử một cái gì đó như '[\ s \ S]' (hoặc một ký tự khoảng trắng hoặc một ký tự không gian). –

+0

Ồ, đó là một điểm tốt. Tôi đã không xem xét các dòng mới. – mkjeldsen

+0

Tôi mong đợi 'echo 'Xin chào" | grep "^. {1,35} $" 'để khớp, nhưng nó không ... bất kỳ ý tưởng tại sao? – dokaspar

8

Có, . (dấu chấm) sẽ khớp với bất kỳ ký tự nào. Sử dụng:

^.{1,35}$ 
4

Nếu bạn cũng muốn để phù hợp với dòng mới, sau đó bạn có thể muốn sử dụng "^[\s\S]{1,35}$" (tùy thuộc vào động cơ regex). Nếu không, như những người khác đã nói, bạn nên sử dụng "^.{1,35}$"

12

Thường là metacharacter . khi không nằm trong lớp nhân vật.

Vì vậy, hãy sử dụng ^.{1,35}$. Tuy nhiên, chấm không bao gồm dòng mới trừ khi công cụ sửa đổi dấu chấm-tất cả được áp dụng chống lại nó.

Bạn có thể sử dụng ^[\S\s]{1,35}$ mà không cần bất kỳ công cụ sửa đổi nào và điều này cũng bao gồm cả dòng mới.

4

Nếu bạn muốn thiết lập Min 1 đếm và không có chiều dài Max,

^.{1,}$ 
+2

'^. + $' Là đơn giản hơn cho việc này. –

+0

Mặc dù điều này hữu ích đối với một số người dùng (kể cả tôi), nhưng nó không trả lời được câu hỏi gốc. – Melebius

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