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"