2012-01-27 40 views
6

Tôi đang cố gắng viết cụm từ thông dụng sẽ xác thực rằng đầu vào của người dùng lớn hơn X số ký tự không khoảng trắng. Tôi về cơ bản đang cố gắng lọc ra bắt đầu và kết thúc khoảng trắng trong khi vẫn đảm bảo rằng đầu vào lớn hơn X ký tự; các ký tự có thể là bất cứ điều gì, chỉ cần không khoảng trắng (không gian, tab, trả lại, dòng mới). này regex Tôi đã sử dụng, nhưng nó không hoạt động:Độ dài tối thiểu Biểu thức chính quy

\s.{10}.*\s 

Tôi đang sử dụng C# 4.0 (Asp.net Regular Expression Validator) btw nếu có vấn đề.

+1

Nó có phải là regex không? Bạn có thể làm điều đó mà không cần một regex khá dễ dàng. –

Trả lời

7

Nó có thể dễ dàng hơn để không sử dụng regex tại tất cả:

input.Where(c => !char.IsWhiteSpace(c)).Count() > 10 

Nếu khoảng trắng không cần đếm ở giữa, sau đó điều này sẽ làm việc:

(\s*(\S)\s*){10,} 

Nếu bạn không quan tâm về khoảng trống giữa các ký tự không khoảng trắng, các câu trả lời khác có kịch bản đó được đề cập đến.

+0

Xin lỗi, chỉ cần cập nhật. Tôi đang sử dụng trình xác thực biểu thức chính quy. – Mark

+0

@Mark - nếu xác thực của bạn không thành công nếu có khoảng trắng ở giữa một số ký tự hợp lệ, ví dụ: 'f a i l' –

+0

Không, điều đó tốt, miễn là có các ký tự X giữa khoảng trắng không đầu tiên và khoảng trắng không phải cuối cùng. – Mark

3

biểu thức chính quy này trông cho tám hoặc nhiều ký tự giữa các ký tự không phải khoảng trắng đầu tiên và cuối cùng, bỏ qua hàng đầu và dấu khoảng trắng:

\s*\S.{8,}\S\s* 
1

Nếu bạn cố gắng để kiểm tra (như trong trường hợp của tôi một số điện thoại mà chứa 8 chữ số), bạn cần tham khảo một số bên dưới số bạn cần.

(\s*(\S)\s*){7,} 
Các vấn đề liên quan