2012-09-14 34 views
5

Tôi đang sử dụng chú thích dữ liệu MVC và yêu cầu của tôi là trường địa chỉ có thể chứa bất kỳ ký tự nào (ngoại trừ ký tự tiếng Anh cũng được phép) trừ < > . ! @ # %/? *.Biểu thức chính quy Trừ các ký tự này

Tôi đã tìm kiếm nhiều trang web nhưng không nhận được cách viết regex này.

Cho đến nay tôi đã cố gắng:

[Required(ErrorMessage = "Address Required.")] 
[RegularExpression(@"^[<>[email protected]#%/]+$", ErrorMessage = "Address invalid.")] 
public string Address { get; set; } 

Trả lời

10

Hiện tại, bạn chỉ được phép chuỗi gồm CHỈ các chữ cái.

Sử dụng

"^[^<>[email protected]#%/]+$" 
1

Cố gắng là cụm từ thông:

[^<>[email protected]#%/?*] 
+0

Bạn có thể xóa tất cả các dấu gạch chéo ngược đó. Ngoài ra, điều này chỉ phù hợp với một ký tự. –

1

này nên làm việc:

"[.!^<> @ #% /]"

EDIT:

. (dấu chấm) là ký tự dành riêng trong Cụm từ thông dụng, vì vậy bạn cần phải thoát khỏi nó.

8

Hãy regex bạn chọn từ bất kỳ ký tự trừ những người được liệt kê với caret:

[^abc] 

sẽ phù hợp với bất cứ điều gì đó không phải là một a, b, hoặc c.

Vì vậy, đặt nó tất cả cùng nhau, regex của bạn sẽ là

^[^<>[email protected]#%/?*]+$ 

Lưu ý ở đây là các dấu nháy bên ngoài dấu ngoặc vuông có nghĩa là 'phù hợp khi bắt đầu dòng', tuy nhiên bên trong dấu ngoặc vuông có nghĩa là 'phù hợp với bất cứ điều gì không phải là bất kỳ nội dung nào sau đây '

+2

Bạn không cần phải thoát khỏi metacharacters regex trong một lớp nhân vật (ngoại trừ dấu gạch chéo ngược và khung đóng). –

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