STDIO
Tìm kiếm gần đây
    • 0

    Biểu Thức Chính Quy

    Giới thiệu Regular Expression và hướng dẫn sử dụng trong C# với System.Text.RegularExpression
    03/03/2016
    20/09/2020
    3 phút đọc
    Biểu Thức Chính Quy

    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"

    Sản phẩm

    Đề xuất

    Ứng Dụng Stack - Biểu Thức Tiền Tố (Prefix)

    Ứng Dụng Stack - Biểu Thức Tiền Tố (Prefix)

    Trong toán học thì các biểu thức thường được biểu diễn dưới dạng trung ...

    Giải Thuật Lập TrìnhCấu trúc dữ liệu

    19/08/2016

    Ứng Dụng Stack - Biểu Thức Hậu Tố (Postfix)

    Ứng Dụng Stack - Biểu Thức Hậu Tố (Postfix)

    Ứng dụng ngăn xếp stack để chuyển từ biểu thức trung tố (Infix) sang ...

    Giải Thuật Lập TrìnhCấu trúc dữ liệu

    18/01/2017

    Khám phá thêm

    Automata và Ngôn ngữ hình thức

    Automata và Ngôn ngữ hình thức

    Giới thiệu về Automata và Ngôn ngữ hình thức.

    Nguyễn Huỳnh Thảo Nhi

    23/09/2014

    Các Phép Đếm Cơ Bản

    Các Phép Đếm Cơ Bản

    Giới thiệu về các quy tắc đếm cơ bản: quy tắc cộng, quy tắc nhân, tổ ...

    Vũ Quang Huy

    26/09/2014

    Giải Thuật Đệ Quy

    Giải Thuật Đệ Quy

    Hiểu đệ quy và các loại đệ quy trong lập trình với code minh họa các hàm ...

    Nguyễn Minh Hiếu

    22/07/2015

    Chuyển Đổi Số Thực Sang Nhị Phân Theo Chuẩn IEEE 754

    Chuyển Đổi Số Thực Sang Nhị Phân Theo Chuẩn IEEE 754

    Tìm hiểu về cách lưu trữ số thực trong hệ nhị phân theo tiêu chuẩn IEEE ...

    Hiếu Nguyễn

    23/11/2014

    Ứng Dụng Stack - Biểu Thức Trung Tố (Infix)

    Ứng Dụng Stack - Biểu Thức Trung Tố (Infix)

    Ứng dụng ngăn xếp stack để xử lý các biểu thức trung tố (Infix).

    Giải Thuật Lập TrìnhCấu trúc dữ liệu

    02/04/2017

    Xử Lý Unicode - UTF-16

    Xử Lý Unicode - UTF-16

    Giới thiệu về Unicode UTF-16, cách thức mã hóa và giải mã UTF-16.

    Modern C++Nâng cao

    02/06/2014

    Hiện Thực Game Zero Với Unity - Phần 3 - Điểm Số Và Progress Timer

    Hiện Thực Game Zero Với Unity - Phần 3 - Điểm Số Và Progress Timer

    Tiếp tục chuỗi bài viết Hướng Dẫn Hiện Thực Game Zero Với Unity, ở phần ...

    Lập Trình GameKiến Thức Nâng Cao

    10/08/2015

    Tổng Quan Về Thực Tại Ảo - Virtual Reality

    Tổng Quan Về Thực Tại Ảo - Virtual Reality

    Tổng thể về thực tại ảo, những thành phần chính của hệ thống và xu hướng ...

    Technical ArtistVR/AR

    13/08/2015

    STDIO
    Trang chính
    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    developer@stdio.vn

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    ©STDIO, 2013 - 2020