Đây là thiết kế và có xu hướng ném nhiều người. RegularExpressionValidator không tạo trường bắt buộc và cho phép nó để trống và chấp nhận khoảng trắng. Định dạng \ d + là chính xác. Ngay cả khi sử dụng^\ d + $ sẽ dẫn đến cùng một vấn đề cho phép khoảng trắng. Cách duy nhất để buộc điều này không cho phép khoảng trắng là cũng bao gồm một RequiredFieldValidator để hoạt động trên cùng một điều khiển.
Đây là theo RegularExpressionValidator documentation, trong đó nêu:
Validation thành công nếu việc kiểm soát đầu vào trống. Nếu giá trị là bắt buộc cho điều khiển nhập được liên kết, hãy sử dụng điều khiển RequiredFieldValidator ngoài điều khiển RegularExpressionValidator.
Kiểm tra biểu thức chính quy của trường trong mã sau sẽ hoạt động như mong đợi; đây chỉ là vấn đề với RegularExpressionValidator. Vì vậy, bạn có thể sử dụng CustomValidator một cách có thể thay thế và nói args.IsValid = Regex.IsMatch(txtInput.Text, @"^\d+$")
và nếu nó chứa khoảng trắng thì nó sẽ trả về false. Nhưng nếu đó là lý do tại sao không chỉ sử dụng RequiredFieldValidator cho mỗi tài liệu và tránh viết mã tùy chỉnh? Ngoài ra một CustomValidator có nghĩa là một postback bắt buộc (trừ khi bạn chỉ định một kịch bản xác nhận khách hàng với javascript tương đương regex).
Nguồn
2009-07-06 05:27:52
tất cả các khoảng trống được coi là rỗng? trông giống như cắt trên máy chủ là câu trả lời. –
Có, để trống hoặc thêm khoảng trắng giống nhau. Khi ký tự được nhập, trình xác thực sẽ kích hoạt, do đó, nhập "10" hợp lệ. Bạn có thể giữ nó như nó được, biết rằng bất cứ điều gì làm cho nó thông qua sẽ là một số hợp lệ hoặc khoảng trắng. Trong cả hai trường hợp, hãy cắt giảm giá trị của bạn. –
cảm ơn Ahmad. tôi muốn tài liệu MSDN sẽ nói "tất cả khoảng trắng trống"! –