2012-01-19 26 views
9

Vấn đề đơn giản: dự án hiện tại cho phép tôi thêm trường bổ sung (với các kiểm tra bổ sung trên các trường đó dưới dạng cụm từ thông dụng) để hỗ trợ biểu mẫu nhập tùy chỉnh. Và tôi cần thêm một biểu mẫu mới nhưng không thể thay đổi cách hoạt động của dự án này. Biểu mẫu này cho phép khách truy cập nhập tên và họ của họ cùng với tên viết tắt. Vì vậy, RegEx ^[a-zA-Z.]*$ chỉ hoạt động tốt ngay bây giờ.
Sau đó, ai đó nhận thấy rằng nó sẽ không chấp nhận ký tự dấu phụ làm đầu vào. Tên Thổ Nhĩ Kỳ như Ömür không được chấp nhận là hợp lệ. Nó cần phải được chấp nhận, mặc dù.Kiểm tra dấu phụ với cụm từ thông dụng

Vì vậy, tôi có hai lựa chọn:

  1. Tháo kiểm tra hoàn toàn, mà sẽ cho phép người dùng nhập vào rác.
  2. Viết biểu thức chính quy cũng bao gồm các chữ cái có dấu phụ nhưng vẫn không có chữ số, dấu cách hoặc các chữ cái khác.

Vì tôi không thể thay đổi mã của dự án, tôi chỉ có hai tùy chọn này. Tôi muốn lựa chọn 2 nhưng bây giờ tự hỏi những gì RegEx thích hợp nên được. (Dự án được viết bằng C# 4.0.)

+0

Bạn sẽ làm gì về người thay đổi hợp pháp dạng viết của tên của họ thành chuỗi ký tự "42 79"? Một số người làm những việc ngu ngốc như vậy ... –

+0

Vâng, một người có tên "42 79" sẽ được nhập là "Fourtytwo Zeventynine". :-) Bên cạnh đó, không phải tất cả các quốc gia đều cho phép công dân của họ trở nên ngu ngốc này. :-) –

+1

Bỏ qua quy định địa phương, nếu tên tôi là “42 79” và một người nào đó đặt nó trong một số poxy DB là “Fourtytwo Zeventynine”, tôi sẽ yêu cầu họ thay đổi DB của họ vì nó sẽ là _formally_ không chính xác. Thêm vào vấn đề, mọi người _do_ có tên gia đình nhiều từ (có thể hoặc không dễ viết hoa) và tên gia đình có dấu nháy đơn (phổ biến ở họ Ireland) và một loạt các thứ khác. Tên là khó khăn để xác nhận. –

Trả lời

21

Bạn có thể sử dụng thoát cụ thể Unicode cho chữ - \p{L} (điều này sẽ bao gồm các A-Za-z dãy):

^[.\p{L}]*$ 

Xem trên regularexpressions.info:

\ p {L} hoặc \ p {Letter}

Khớp một điểm mã Unicode duy nhất có thuộc tính "chữ cái". Xem Thuộc tính ký tự Unicode trong hướng dẫn để biết danh sách đầy đủ các thuộc tính. Mỗi điểm mã Unicode có chính xác một thuộc tính. Có thể được sử dụng bên trong các lớp nhân vật.

+1

Nếu bạn thêm '\ p {L}' vào lớp ký tự, bạn có thể xóa 'a-zA-Z'. – stema

+0

@stema - Bắt tốt. Đã cập nhật câu trả lời. – Oded

+0

Giải pháp tuyệt vời! Đã giải quyết được sự cố. –

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