1. Trang chủ
  2. » Công Nghệ Thông Tin

Tuan10 validation, regex

15 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Regular Expressions, Validation
Trường học Trường Đại Học
Chuyên ngành Lập Trình Ứng Dụng
Thể loại bài luận
Năm xuất bản 2019
Thành phố Hà Nội
Định dạng
Số trang 15
Dung lượng 616,71 KB

Nội dung

Lập trình Windows 11/3/2019 1 Regular Expressions, Validation Lập trình Ứng dụng quản lý Nội dung  Regular Expressions  Validation 11/3/2019 2 Nội dung  Regular Expressions  Validation Regular Exp[.]

Trang 1

Regular Expressions, Validation

Lập trình Ứng dụng quản lý

Nội dung

Trang 2

Nội dung

Regular Expressions

Regular Expression là một ngôn ngữ cực mạnh

dùng mô tả văn bản cũng như thao tác trên văn

bản.

Regular Expression là kỹ thuật xác định một

chuỗi các ký tự sẽ được sử dụng trong mẫu tìm

kiếm Regular Expression được viết theo một cú

pháp cụ thể và sau đó thường được áp dụng trên

một chuỗi văn bản lớn hơn để xem chuỗi có đáp

ứng các điều kiện được xác định trong Regular

Expression hay không.

Trang 3

Cấu trúc RegExp

Literal (trực kiện): đại diện cho ký tự cần so khớp

(a, b, …,Z, 0, 1,… 9, _…).

Metacharacters (siêu ký tự): là ký tự đặc biệt (\, -,

[, ], (, ), ^, $,…) hoạt động như chỉ thị lệnh trong

chuỗi RegExp.

Bộ Metacharacters cơ bản

đại diện cho 1 ký tự bất kỳ trừ ký tự xuống dòng \n

\d ký tự chữ số tương đương [0-9]

\D ký tự ko phải chữ số

\s ký tự khoảng trắng tương đương [\f\n\r\t\v]

\S ký tự không phải khoảng trắng tương đương [^\f\n\r\t\v]

\w ký tự word (gồm chữ cái và chữ số, dấu gạch dưới _ ) tương

đương [a-zA-Z_0-9]

\W ký tự không phải ký tự word tương đương [^a-zA-Z_0-9]

^ bắt đầu 1 chuỗi hay 1 dòng

$ kết thúc 1 chuỗi hay 1 dòng

\z Kết thúc 1 chuỗi

Trang 4

Ký tự Ý nghĩa

| ký tự ngăn cách so trùng tương đương với phép or (lưu ý cái này

nếu muốn kết hợp nhiều điều kiện)

[abc] khớp với 1 ký tự nằm trong nhóm là a hay b hay c

[a-z] so trùng với 1 ký tự nằm trong phạm vi a-z, dùng dấu – làm dấu

ngăn cách

[^abc] sẽ không so trùng với 1 ký tự nằm trong nhóm, ví dụ không so

trùng với a hay b hay c

() Xác định 1 group (biểu thức con) xem như nó là một yếu tố đơn

lẻ trong pattern, ví dụ ((a(b))c) sẽ khớp với b, ab, abc

? khớp với đứng trước từ 0 hay 1 lần Vídụ A?B sẽ khớp với B hay

AB

* khớp với đứng trước từ 0 lần trở lên A*B khớp với B, AB, AAB,…

+ khớp với đứng trước từ 1 lần trở lên A+B khớp với AB, AAB,

{n} n là số, khớp đúng với n ký tự đứng trước nó Ví dụ A{2} khớp

đúng với AA

{n,} khớp đúng với n ký tự trở lên đứng trước nó, A{2,} khớp với AA,

AAA,

{m,n} khớp đúng với từ m -> n ký tự đứng trước nó, A{2,4} khớp vói

AA,AAA,AAAA

Ví dụ

Trang 5

Sử dụng RegExp trong NET

 Regex

 Match

 MatchCollection

 Group

 GroupCollection

 Capture

 CaptureCollection

Class Regex

Options : trả về những mục chọn được trao qua

cho constructor Regex.

RightToLeft : nhận 1 trị cho biết liệu xem regular

expression dò tìm từ phải qua trái hay không.

GetGroupNames : trả về mảng gồm toàn tên nhóm

lấy được đối với RegExp.

GetGroupNumbers : trả về mảng gồm toàn số

nhóm lấy được tương ứng với tên nhóm trên 1

mảng.

Trang 6

GroupNameFromNumber: đi lấy tên nhóm tương ứng với

số nhóm được khai báo.

IsMatch: trả về trị bool cho biết liệu xem RegExp có tìm

thấy một so khớp hay không trên pattern.

Match: dò tìm trên pattern xem có xuất hiện một RegExp

hay không rồi trả về kết quả chính xác như là một đối

tượng Match duy nhất.

Matches: dò tìm trên pattern xem tất cả các xuất hiện của

một RegExp có hay không rồi trả về tất cả những so khớp

thành công xem như Match được gọi nhiều lần.

Replace: cho thay thế những xuất hiện của một pattern

được định nghĩa bởi một RegExp bởi một chuỗi ký tự thay

thế được chỉ định.

Split: chia một pattern thành một mảng gồm những chuỗi

con ở những vị trí được chỉ định bởi một so khớp trên

RegExp.

Unescape: cho unescape bất cứ những ký tự nào được

escape trên pattern.

Nội dung

Regular Expressions

Trang 7

trước khi lưu xuống database để đảm bảo tính

toàn vẹn dữ liệu.

gọi là validation.

dựng cơ chế validation phù hợp (nơi thực hiện,

mức độ,…)

Validation Events

Validation events được thiết kế để cho phép

kiểm tra thông tin ngay khi được nhập, hơn là

chờ đợi để gửi toàn bộ biểu mẫu (form) Điều

này là rất hữu ích vì:

 Người dùng sẽ yên tâm gửi biểu mẫu vì khả năng

phát sinh lỗi đã được kiểm soát.

 Người dùng có thể nhập nhiều mẩu dữ liệu không

hợp lệ vào cùng một thời điểm Nếu không kiểm tra

dữ liệu cho đến khi biểu mẫu được gửi đi, chương

trình sẽ phải tìm ra cách nào đó để thông báo tất cả

các lỗi cùng một lúc.

 Vào thời điểm người dùng gửi biểu mẫu, họ có thể

đã quên về trường cụ thể mà họ nhập không chính

xác.

Trang 8

Validation Event Sequence

 Khi điều hướng từ control này sang control khác,

một chuỗi event sẽ xảy ra Ví dụ chuyển từ TextBox1

sang TextBox2 bằng cách nhấn tab thì các event

xảy ra như sau

 Leave (TextBox1)

 Enter (TextBox2)

 LostFocus (TextBox1)

 GotFocus (TextBox2)

Thực hiện validation với event LostFocus ?

 Khi điều hướng bằng mouse:

 LostFocus (TextBox1)

 Leave (TextBox1)

 Enter (TextBox2)

 GotFocus (TextBox2)

Validating events

TextBox1 sang TextBox2

 Leave (TextBox1)

 Enter (TextBox2)

 Validating (TextBox1)

 Validating (TextBox2)

 LostFocus (TextBox1)

 GotFocus (TextBox2)

Validated event cho phép phản hồi dữ liệu đã

nhập chính xác.

Validating event cho phép thực hiện xác minh

Trang 9

CausesValidation property

Validation chỉ diễn ra khi source control có thiết

lập property CausesValidation thành true Ngoài

ra, Validation sẽ không xảy ra cho đến khi sự

CausesValidation được đặt thành true Nếu một

các event validation bị tạm dừng, nhưng các

event khác (như EnterLeave ) vẫn xảy ra

Bảng sau cho thấy một số ví dụ về những gì có

control khác.

.NET Validation

Source Control Destination Control Result

CousesValidation = false Khôngxảy ra Validation code bị bỏ qua

CousesValidation = true CousesValidation = true Validation được thực hiện

cho source control CousesValidation = true CousesValidation = false Validationbị hoãn lại cho

đến khi sự thay đổi focus vào một

CausesValidation Vào thời điểm này, tất cả các controlcần phải được validtheo thứ tự cho đến khi một control được tìm thấy với dữ liệu nhập không hợp lệ và quá trình

bị hủy bỏ

Trang 10

Ví dụ

private void TxtFN_Validating( object sender, CancelEventArgs e)

{

if (((TextBox)sender).Text.Length == 0)

{

MessageBox.Show( "You must enter a first and last name." ,

"Invalid Input" , MessageBoxButtons.OK, MessageBoxIcon.Warning);

e.Cancel = true ;

}

}

Vấn đề đóng form

private void BtnCancel_Click(object sender, EventArgs e)

{

AutoValidate = AutoValidate.Disable;

Close();

}

Trang 11

Giải quyết vấn đề

private void FrmMain_FormClosing( object sender, FormClosingEventArgs e)

{

// If e.Cancel is true, the cancel flag has been set by a validation routine.

if (e.Cancel)

{

DialogResult result = MessageBox.Show( "Do you wish to close the form?" ,

"Errors found" , MessageBoxButtons.YesNo);

if (result == DialogResult.Yes)

{

e.Cancel = false ;

}

}

}

ErrorProvider

đến người dùng là giải pháp không tốt, làm giảm

chất lượng trải nghiệm ứng dụng.

dùng thân thiện hơn, mục tiêu vừa không làm

gián đoạn trải nghiệm người dùng, vừa đưa được

thông tin lỗi sớm và chính xác nhất (vị trí và loại

lỗi).

thị thông tin lỗi uyển chuyển hơn.

Trang 12

Sử dụng ErrorProvider

private void TxtFN_Validating( object sender, CancelEventArgs e)

{

Control ctrl = (Control)sender;

if (ctrl.Text.Length == 0)

{

errorProviderMain.SetError(ctrl, "You must enter a first and last name." );

e.Cancel = true ;

}

else

{

errorProviderMain.SetError(ctrl, "" );

}

}

Kiểm tra lỗi

private void BtnOK_Click( object sender, EventArgs e)

{

if (errorProviderMain.GetError(txtFN).Length == 0 &&

errorProviderMain.GetError(txtLN).Length == 0)

{

Close();

}

else

{

MessageBox.Show( "You still have invalid input." ,

"Invalid Input" , MessageBoxButtons.OK, MessageBoxIcon.Warning);

}

}

Trang 13

Custom Validation Components

message và cũng như xử lý event riêng.

control cần validation thì việc thực hiện riêng

từng validation là không khả thi.

Các yêu cầu cơ bản

mode.

báo lỗi trên UI.

thực hiện validation.

Trang 14

Ví dụ

public class RegExValidator : Component

{

ErrorProvider errorProvider = new ErrorProvider();

public string ErrorMessage { get ; set ; }

public string RegExString { get ; set ; }

Control control2Validate;

[TypeConverter( typeof (ReferenceConverter))]

public Control ControlToValidate

{

get => control2Validate;

set

{

if (control2Validate != null && !DesignMode)

{

control2Validate.Validating -= Control2Validate_Validating;

}

control2Validate = value;

if (control2Validate != null && !DesignMode)

{

control2Validate.Validating += Control2Validate_Validating;

}

}

}

private void Control2Validate_Validating( object sender, CancelEventArgs e)

{

}

}

 Mask

 PromptChar

 TextMaskFormat

 …

 TypeValidationCompleted

 MaskInputRejected

 …

MaskedTextBox

Trang 15

Nội dung

Regular Expressions

Validation

Bài tập

 Với database QLBH, tạo form đăng ký như hình

 Kiểm tra nhập liệu và thông báo lỗi cho người dùng ngay khi chuyển

focus

 Các trường nhập liệu không được bỏ trống

 Username phải duy nhất, ko có ký tự HOA, bắt đầu bởi ký tự a-z,

không khoảng trắng và các ký tự đặc biệt (chỉ gồm a-z, 0-9, -, _, )

 Password chỉ gồm các ký tự: a-z, 0-9 và tối thiểu 3 ký tự

 Name không được bắt đầu bởi ký số hay ký tự đặc biệt

 Email cần đúng chuẩn cơ bản (check được mail fit)

 DOB theo format: dd/mm/yyyy

Ngày đăng: 09/04/2023, 06:29

HÌNH ẢNH LIÊN QUAN

Bảng sau cho thấy một số ví dụ về những gì có - Tuan10 validation, regex
Bảng sau cho thấy một số ví dụ về những gì có (Trang 9)