Regular Expression là gì? Lập trình viên không thể không sài qua cái này


Regular Expression chủ yếu là các mẫu (pattern) thay vì các chuỗi cụ thể được sử dụng tìm/thay thế (Find/Replace). Là một công cụ cực mạnh cho xử lí chuỗi trong C#, javascript....


Các cú pháp cơ bản Regular Expression

bang regular expression

Kết hợp chuỗi đơn giản (Simple String Matching)

Là hình thức cơ bản nhất của biểu thức nhưng cho phép bạn nhanh chóng khai thác các mẫu khác nhau để bạn có thể tìm kiếm nhiều hơn một chuỗi tại một thời điểm hơn là thực hiện nhiều thao tác Tìm.

Tìm: m?n
Phù hợp: "man" and "men" but not "moon"

Tìm: t*t
Phù hợp: "test", "tonight" và "tea time" (the "tea t" portion) không phải "tea time"

Tìm: Te+st
Phù hợp: "test", "teest", "teeeest" không phải "tst"

Các ví dụ thực tế và hay sử dụng Regular Expression

  • Kiểm tra dữ liệu nhập vào có phải là Email không, có phải là số điện thoại không
  • Cấu hình rewrite trong web.config
  • Xóa bỏ các comment trong code, xóa bỏ những khoảng trắng dư thừa trong html giúp file html nhẹ hơn khi trả về cho trình duyệt

Loại bỏ thẻ tag html

public static string TrimHtmlTags(this string input)
{
    if (string.IsNullOrEmpty(input))
        return null;
    input = HttpUtility.HtmlDecode(input);
    return Regex.Replace(input, @"<.[^>]*>", string.Empty);
}

Chuyển chuỗi có dấu sang không dấu

public static string ToVietNameseChacracter(this string s)
{
    if (string.IsNullOrEmpty(s))
        return string.Empty;
    Regex regex = new Regex("\\p{IsCombiningDiacriticalMarks}+");
    string temp = s.Normalize(NormalizationForm.FormD);
    return regex.Replace(temp, String.Empty);
}

Kiểm tra xem có phải là Email không

public bool IsValidMail(string email)
{
    if (string.IsNullOrEmpty(email))
        return false;
    string sMailPattern = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
    return Regex.IsMatch(email.Trim(), sMailPattern);
}

Kiểm tra có phải là số điện thoại di động ở Việt Nam không

public bool IsValidVietNamPhoneNumber(string phoneNum)
{
    if (string.IsNullOrEmpty(phoneNum))
        return false;
    string sMailPattern = @"^((09(\d){8})|(086(\d){7})|(088(\d){7})|(089(\d){7})|(01(\d){9}))$";
    return Regex.IsMatch(phoneNum.Trim(), sMailPattern);
}

Kiểm tra chuỗi có phải là số không (hay sử dụng đối với dữ liệu từ người dùng gửi lên server xử lý)

public bool IsValidNumber(string str)
{
    return Regex.IsMatch(str, @"^[0-9]+$");
}

Link tham khảo thêm

  • https://regex101.com
  • http://blog.loadimpact.com/blog/regular-expression-in-the-real-world

Chia sẽ bài viết :


Bài viết liên quan