Biểu Thức Chính Quy

Giới thiệu

Trong quá trình nhập liệu, dễ thấy nhất là việc điền vào form có những yêu cầu bắt buộc khác nhau, như email, số điện thoại… Phải đúng một định dạng hay ràng buộc của nó, để làm được những điều đó thì người lập trình phải xử lý cho phù hợp với những yêu cầu đó một cách tốn kém về thời gian và công sức nhiều. Nhưng may mắn thay, trong C# cũng cung cấp một phương thức hỗ trợ dễ dàng cho việc định dạng đề ra những yêu cầu ràng buộc một cách tự động theo một tiêu chuẩn chung.

Trong bài này tôi sẽ nói về Regular Expression, một công cụ hữu ích và mạnh mẽ cho lập trình viên .NET. Cũng như là một phần của các ngôn ngữ hiện đại.

Tiền đề bài viết

Trong quá trình làm việc, tôi thường khó khăn khi gặp những mắc rối như vậy, bài viết này là những gì tôi rút kết được trong quá trình làm việc và tìm hiểu. Hy vọng bài viết sẽ giúp ích nhiều cho mọi người.

Đối tượng hướng đến

Những bạn đã làm việc với C#.

Những bạn đang tìm hiểu về Regular Expression.

Regular expression

Biểu thức chính quy (tiếng Anh: regular expression, viết tắt là regexp, regex hay regxp) là một chuỗi miêu tả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định. Biểu thức chính quy thường được dùng trong các trình biên tập văn bản và các tiện ích tìm kiếm và xử lý văn bản dựa trên các mẫu được quy định. Nhiều ngôn ngữ lập trình cũng hỗ trợ biểu thức chính quy trong việc xử lý chuỗi, chẳng hạn như Perl có bộ máy mạnh mẽ để xử lý biểu thức chính quy được xây dựng trực tiếp trong cú pháp của chúng. Bộ các trình tiện ích (gồm trình biên tập sed và trình lọc grep) đi kèm các bản phân phối Unix có vai trò đầu tiên trong việc phổ biến khái niệm biểu thức chính quy.

Theo Wiki

Ví dụ:

Định dạng email phải có @, số điện thoại phải bắt buộc là số….

Các class hỗ trợ

.NET framework cung cấp các classes trong System.Text.RegularExpression

Regex class

Có 2 phương thức:

Match (static hoặc instance) trả về kết quả là các so trùng kiểu class Match.

Matches trả về MatchCollection object.

Match class

Kiểu chứa một kết quả match tìm thấy.

ToString() trả về chuỗi con match với regular expression.

MatchCollection class

Trả về một tập match tìm thấy.

Ví dụ:

using System;

using System.Text.RegularExpressions;

namespace RegularExpressions
{
class Program
{
static void Main(string[] args)
{
var s = “STDIO 1000+ posts”;

Regex _regex= new Regex(@”s”);

Console.WriteLine(“Using Match:”);

Console.WriteLine(_regex.Match(s));

Console.WriteLine(“Using Matches:”);

foreach (var _re in _regex.Matches(s))
Console.WriteLine(_re);

Console.ReadLine();
}
}
}

Using Match:
s
Using Matches:
s
s

Các ký tự định nghĩa

Ký tự Trường hợp sử dụng
. Bất kỳ ký tự nào.
[abcd] Bất kỳ ký tự nào nằm trong “[ ]” Ví dụ [abcd] thì “ac” phù hợp còn “ef” không phù hợp.
[^abcd] Ngược với ở trên không có ký tự nào trong “[ ]”.
[a-z]  Ký tự bất kỳ nằm trong khoảng a đến z.
\w bất kỳ ký tự nào nằm trong khoảng [a-zA-Z_0-9].
\W Ngược với \w các ký tự như $,@,?,!, v.v.
\d Số.
\D không phải số.
\s khoảng trắng.
\S không khoảng trắng.

Các ký tự đại lượng

Ký Tự. Trường hợp sử dụng.
* không hoặc nhiều.
+ một hoặc nhiều.
? 0 hoặc có 1 ký tự.
{n} bắt buộc có n ký tự.
{n,} bắt buộc tối tiểu n ký tự hoặc nhiều.
{n,m} bắt buộc tối tiểu n ký tự hoặc tối đa m ký tự.

Ví dụ: định dạng về một email hợp lệ phải có ít nhất 5 ký tự hoặc tối đa là 20 ký tự và có định dạng đuôi là @gmail.com.

string regString = @”\w{5,20}@gmail.com”.

Chú ý: sử dụng @ để nói rằng “\w{5,20}@gmail.com “ là một chuỗi còn không thì ta phải khai báo:

String regString = “\\w{5,20}@gmail.com”

Tổng Kết

Trong bài này tôi đã giới thiệu về một số class cơ bản trong Regular Expression, cũng như các ký tự định nghĩa và ký tự đại lượng. Hy vọng bài viết này sẽ là tiền đề cho bài viết sau trong thời gian tới, đi sâu hơn về Regular Expression cũng như ứng dụng Regular Expression trong ASP.NET MVC.

Cảm ơn anh Kevin La góp phần làm cho bài viết thêm hoàn chỉnh.

Link: http://www.stdio.vn/articles/read/310/bieu-thuc-chinh-quy

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s