• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Kiểm tra cú pháp của một Regular Expression

Các mẹo vặt linh tinh không thuộc các nhóm trên

Điều hành viên: tungcan5diop, QUANITGROBEST

neverland87
Guru
Guru
Bài viết: 490
Ngày tham gia: T.Bảy 26/05/2007 4:31 pm
Been thanked: 8 time

Kiểm tra cú pháp của một Regular Expression

Gửi bàigửi bởi neverland87 » T.Ba 15/04/2008 10:34 am

Thủ thuật: Kiểm tra cú pháp của một Regular Expression
Tác giả: neverland87
Mô tả: Thủ thuật Regular Expression


Vấn đề: Bạn đã khởi tạo một RE, bây giờ bạn muốn kiểm tra tính hợp lệ về cú pháp của RE này, trước khi bạn sử dụng nó:

Giải pháp:
Tạo phương thức KiemTraHopLeRegex, có đối số sPattern là khuôn mẫu dùng để so khớp

Mã: Chọn hết

  1. static bool KiemTraHopLeRegex(string sPattern)
  2.         {
  3.             bool isValid = true;
  4.             if ((sPattern!=null) && (sPattern.Trim().Length>0))
  5.             {
  6.                 try
  7.                 {
  8.                     Regex.Match("", sPattern);
  9.                 }
  10.                 catch (ArgumentException exception)
  11.                 {
  12.  
  13.                     isValid = false;
  14.                 }
  15.             }
  16.             else
  17.             {
  18.                 isValid = false;
  19.             }
  20.             return isValid;
  21.         }


Ví dụ:

Mã: Chọn hết

  1. static void Main(string[] args)
  2.         {
  3.             //vi du 1
  4.             if (KiemTraHopLeRegex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"))
  5.             {
  6.                 Console.WriteLine("Day la Regular Expression hop le!");
  7.             }
  8.             else
  9.             {
  10.                 Console.WriteLine("Day la Regular Expression khong hop le!");
  11.             }
  12.             //vi du 2
  13.             if (KiemTraHopLeRegex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.))"))
  14.             {
  15.                 Console.WriteLine("Day la Regular Expression hop le!");
  16.             }
  17.             else
  18.             {
  19.                 Console.WriteLine("Day la Regular Expression khong hop le!");
  20.             }
  21.         }


Kết quả:

Mã: Chọn hết

  1. Day la Regular Expression hop le!
  2. Day la Regular Expression khong hop le!
  3.  


Phương thức KiemTraHopLeRegex gọi phương thức Regex.Match, điều này hữu ích để chạy nhanh hơn các RE dựa vào một chuỗi. Phương thức tĩnh Regex.Match trả về một đối tượng Match. Bằng cách sử dụng phương thức tĩnh để chạy một RE (trong ví dụ trên là một chuỗi null), ta có thể xác định xem RE có hợp lệ hay không, bằng cách theo dõi về một ngoại lệ đưa ra. Phương thức Regex.Match sẽ đưa ra một ngoại lệ ArgumentException nếu RE là không đúng cú pháp. Thuộc tính Message của ngoại lệ này cho biết lý do tại sao RE bị thất bại, và thuộc tính ParamName chứa RE truyền vào phương thức Match.

Lưu ý đối với newbie: nhớ using System.Text.RegularExpressions; nhé


SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT

Quay về “[.NET] Mẹo vặt khác”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách