72
Chương 2: Thao tác dữ liệu
Địa chỉ e-mail
[\w-]+
nghĩa là chứa một
hoặc nhiều ký tự word
hoặc dấu gạch ngang, ví dụ
^[\w-]+@([\w- ]
+\.)+[\w-]+$
HTTP hoặc HTTPS
URL
Dữ liệu là một URL dựa-trên-HTTP
hay dựa-trên-HTTPS, ví dụ
http://www.microsoft.com
^https?://([\w- ]
+\.)+[\w-]+(/[\w- ./ ?
%=]*)?$
Một khi đã biết cú pháp của biểu thức chính quy, bạn tạo một đối tượng
System.Text.RegularExpression.Regex
bằng cách truyền cho phương thức khởi dựng của nó
chuỗi chứa biểu thức chính quy. Sau đó, gọi phương thức
IsMatch
của đối tượng
Regex
và
truyền chuỗi cần kiểm tra, phương thức này trả về một giá trị luận lý cho biết chuỗi có hợp lệ
không. Cú pháp của biểu thức chính quy sẽ chỉ định
Regex
so trùng toàn bộ chuỗi hay chỉ so
trùng một phần của chuỗi (xem
^
,
\A
,
$
, và
\z
trong bảng 2.2)
Phương thức
ValidateInput
dưới đây minh họa cách kiểm tra chuỗi nhập bằng biểu thức
chính quy:
public static bool ValidateInput(string regex, string input) {
// Tạo đối tượng Regex dựa trên biểu thức chính quy.
Regex r = new Regex(regex);
// Kiểm tra dữ liệu nhập có trùng với biểu thức chính quy hay không.
return r.IsMatch(input);
}
Bạn có thể sử dụng đối tượng
Regex
để kiểm tra nhiều chuỗi, nhưng không thể thay đổi biểu
thức chính quy được gắn cho nó; bạn phải tạo một đối tượng
Regex
mới tương ứng với một
cấu trúc mới. Phương thức
ValidateInput
ở trên tạo ra một đối tượng
Regex
mới mỗi lần được
gọi, thay vào đó bạn có thể sử dụng phương thức tĩnh nạp chồng
IsMatch
.
public static bool ValidateInput(string regex, string input) {
// Kiểm tra dữ liệu nhập có trùng với biểu thức chính quy hay không.
return Regex.IsMatch(input, regex);
}
6.
6.
S d ng bi u th c chính quy đã đ
c biên d ch
ử ụ
ể
ứ
ượ
ị
S d ng bi u th c chính quy đã đ
c biên d ch
ử ụ
ể
ứ
ượ
ị
Bạn cần giảm thiểu các tác động lên hiệu năng của ứng dụng khi các biểu thức
chính quy phức tạp được sử dụng thường xuyên.