Search…

Biểu Thức Chính Quy

20/09/20203 min read
Giới thiệu Regular Expression và hướng dẫn sử dụng trong C# với System.Text.RegularExpression

Trong quá trình nhập liệu, 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. 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.

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. 

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 []
[^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 thiểu n ký tự hoặc nhiều
{n, m} Bắt buộc tối thiể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ì phải khai báo:

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

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024