Classes and Structs - nobody2488.files.wordpress.com fileBiểu thức chính quy là gì? Định...
Transcript of Classes and Structs - nobody2488.files.wordpress.com fileBiểu thức chính quy là gì? Định...
2
Giới thiệu
Phần quan trọng của bất kỳ ứng dụng cơ sở
dữ liệu
• Đảm bảo tính nhất quán dữ liệu
• Bắt được lỗi khi lỗi xảy ra
3
Windows Form Validation
Kiểm tra phải nhập
Kiểm tra dữ liệu có phải là số không
Kiểm tra dữ liệu trong miền giá trị
Kiểm tra dữ liệu giống với mẫu định sẵn
Kiểm tra dữ liệu theo quy tắc nghiệp vụ
4
Sự kiện kiểm tra tính hợp lệ
Mỗi control có hai sự kiện
• Validating
– Ngay sau khi nhập xong dữ liệu
– Trước khi dữ liệu được chấp nhận hợp lệ
• Validated
– Sau khi dữ liệu được chấp nhận hợp lệ
6
Sự kiện kiểm tra tính hợp lệ
Tham số của sự kiện Validating và Validated
• CancelEventArgs
– Cancel = true: báo dữ liệu không hợp lệ
private void OnUsernameValidating(object sender, CancelEventArgs e)
{
if (string.IsNullOrEmpty(m_UsernameTextBox.Text))
{
e.Cancel = true;
MessageBox.Show("Username is a required field");
}
}
7
Sự kiện kiểm tra tính hợp lệ của DataGridView
Có vài cấp validation
• Cấp lưới
– Validating
– Validated
• Cấp dòng
– RowValidating
– RowValidated
• Cấp ô (cell)
– CellValidating
– CellValidated
8
Sự kiện kiểm tra tính hợp lệ của DataGridView
Tham số của sự kiện Validating và Validated
• Dòng
– DataGridViewCellCancelEventArgs
Cancel = true
• Ô (cell)
– DataGridViewCellValidatingEventArgs
RowIndex
ColumnIndex
Cancel = true
9
Hiện thông báo lỗi
Lớp MessageBox
Lớp ErrorProvider
• Ánh xạ thông tin lỗi với mỗi control
• Phương thức:
– SetError(tênControl, “thông báo lỗi”);
– “thông báo lỗi” = null: xóa thông tin lỗi
• Property
– Icon: biểu tượng lỗi
– BlinkStyle, BlinkRate
– DataSource, DataMember
10
Hiện thông báo lỗi
private void OnPasswordValidating(object sender, CancelEventArgs e)
{
if (!string.IsNullOrEmpty(m_UsernameTextBox.Text) && !CheckPasswordForUser())
{
m_ErrorProvider.SetError(m_PasswordTextBox, "Password is incorrect");
}
else
{
m_ErrorProvider.SetError(m_PasswordTextBox, null);
}
}
11
Hiện thông báo lỗi
try
{
int x = Int32.Parse(textBox1.Text);
errorProvider1.SetError(textBox1, "");
}
catch (Exception e)
{
errorProvider1.SetError(textBox1, "Not an integer value.");
}
13
Biểu thức chính quy là gì?
Vấn đề:
• Khi yêu cầu user điền dữ liệu vào form. Trước khi gởi dữ liệu lên server xử lý tiếp kiểm tra
– Dữ liệu có bỏ trống không
– Dữ liệu nhập đúng theo định dạng chưa
– …
Công cụ:– Kiểm tra bằng “tay”
– Regular Expression
14
Biểu thức chính quy là gì?
Định nghĩa:
• Biểu thức chính quy (Regular Expression) là
một chuỗi các ký tự (mẫu các ký tự) dùng để
kiểm tra sự tương thích với chuỗi text khi thực
hiện tìm kiếm hay thay thế
15
Tạo biểu thức chính quy
Namespace
• using System.Text.RegularExpressions
Class: Regex
• Có hai cách sử dụng lớp Regex
– Tạo instance của lớp Regex
– Sử dụng các phương thức static của lớp
Regex
16
Các lớp biểu thức chính quy
Tạo đối tượng biểu thức chính quy• Regex reg = new (“pattern”);
• Ví dụ:Regex reg = new (“abc”);
Class: Match• Biểu diễn kết quả của phương thức Match của lớp
Regex. Đối tượng Match lưu kết quả đầu tiên hợp với chuỗi input
• Property – Match.Success cho biết dữ liệu input “khớp” với mẫu
– Match.Index: vị trí tìm thấy
– Match.Value: Giá trị tìm thấy
17
Các lớp biểu thức chính quy
Class: MatchCollection
• Chỉ danh sách các đối sánh được tìm thấy
(không đè lên nhau) của phương thức
Matches của lớp Regex
18
Tạo chuỗi BTCQ
Đối sánh với chuỗi thông thường
• “trang” là BTCQ
• “CSharp” là BTCQ
Đối sánh với bất kỳ chuỗi nào
• Ký hiệu: “.”
Đối sánh với các ký tự đặc biệt:
• “\.” “\\” “\[” “\]”
19
Tạo chuỗi BTCQ
Đối sánh với vài ký tự
• Vấn đề: .a na, sa, … Muốn chỉ “na” và “sa”
• [ns]a
• [ ] định nghĩa một tập hợp
Đối sánh với 1 vùng (miền) ký tự liên tiếp
• [0123456789] = [0-9]
• [a-z]: Ký tự từ a z
20
Tạo chuỗi BTCQ
Đối sánh với nhiều vùng (miền) ký tự liên tiếp
• [ABCDEFGHIJKLMNOPQRSTUVWXYZabcde
fghijklmnopqrstuvwxyz01234567890]
• [A-Za-z0-9]
Đối sánh “bất kỳ gì ngoại trừ”
• [^a-z0-9]:Không là Ký tự từ a z và 09
21
Tạo chuỗi BTCQ
Đối sánh với vài ký tự đặc biệt
• Đối sánh số
– \d Một số có 1 chữ số
– \D Không là số
• Đối sánh ký tự
– w Ký tự chữ, số, gạch dưới: [a-zA-Z0-9_]
– \W Ngược lại \w: [^a-zA-Z0-9_]
22
Tạo chuỗi BTCQ
Đối sánh ký tự khoảng trắng
• \s space hay tab hay newline
• \S ngược lại \s
• \t tab
• \n newline
24
Đối sánh với nhiều ký tự hay tập hợp
• X+ Có 1 hay nhiều X
• X? Có 0 hay 1 X
• X* Có 0 hay nhiều X
• (xyz)+ Có 1 hay nhiều mẫu xyz
• X{m, n}Có ít nhất là m và không nhiều hơn n X
• X{m,} Ít nhất có m lần X
27
Kiểm tra Field rỗng
Trong form field
• Bắt buộc phải nhập
• Tùy ý (option)
Câu hỏi: user đã nhập vào field phải nhập
hay chưa
Cách kiểm tra:
• Bằng “”
• Bằng null
28
Kiểm tra Zip code
Zip Code 5 chữ số
• ^\d{5}$
• ^[0-9][0-9][0-9][0-9][0-9]$
Một số zip code dài hơn: 5-4
• ^\d{5}-?\d{4}$
29
Kiểm tra dữ liệu chữ
Kiểm tra: Tên, tiểu ban, thành phố, quốc gia,
…
Biểu thức chính quy
• ^[a-zA-Z]+$
30
Kiểm tra số điện thoại
Kiểm tra:
• ViệtNam:
– Thành phố: 7 số
– Di động: 10 số
• Mỹ: (714)799 – 1455
– Gồm 10 số
– Mã vùng: 3 số
– Số đăng ký: 7 số
– Mã vùng có thể có ( và )
– Số đăng ký: có thể có khoảng trắng hay –
• Biểu thức chính quy:^\(?\d{3}\)?-?\s*\d{3}\s*-?\d{4}$
31
Kiểm tra email
Một số email
32
Kiểm tra email
Một email thường có:
• Dấu @ giữa username và address
• Ít nhất một dấu . giữa address và domain name
(.com, .mil, .edu, .se)
• Ít nhất 6 ký tự ([email protected])
Biểu thức chính quy
• @“^(([\-\w]+)\.?)+@(([\-\w]+)\.?)+\.[a-zA-Z]{2,4}$”