[AS3] Sử dụng Regular Expression

Regular Expression (RegExp – Biểu thức chính quy ?)  là một cách mạnh mẽ và nhanh chóng để kiểm tra, tìm kiếm và thao tác các chuỗi ký tự trong một tập tin, văn bản, đoạn, mã … So với các ngôn ngữ lập trình khác thì Regular Expression mới chỉ xuất hiện ở ActionScript 3.0. Trước đó, các lập trình viên ActionScript vẫn phải thao tác trực tiếp trên chuỗi để kiểm tra.
Có 2 cách để sử dụng Regular Expression – hoặc dùng lớp RegExp để tạo ra 1 instance của RegExp
var testRE:RegExp = new RegExp("My Testing");
hoặc dùng theo dạng tập hợp các ký tự, chuỗi
var testRE:RegExp = /My Testing/;

Kiểm tra chuỗi

Như ở ví dụ đầu tiên là để kiểm tra chuỗi “My Testing” có nằm trong chuỗi cần kiểm tra hay không. Ngoài ra có thể kết hợp ký tự “|” – OR để kiểm tra thêm nhiều trường hợp khác. Ví dụ
var testRE:RegExp =  /Dog|Cat/
Các chuỗi thỏa điều kiện sẽ là những chuỗi có từ Cat hoặc Dog – This is my Dog là một trường hợp đúng.

Kiểm tra các ký tự

RegEx cho phép kiểm tra các ký tự trong chuỗi như kiểu “tất cả các ký tự phải là chữ thường và không phải là số”. Để kiểm tra các ký tự, cần đặt các ký tự trong ngoặc []. Ví dụ

[a-z] – chỉ hợp lệ khi chuỗi bao gồm các ký tự thường nằm trong khoảng từ a – z

[A-Z] – chỉ chấp nhận các ký tự hoa

[0-9] – Chỉ chấp nhận số

Hoặc cũng có thể kết hợp cả 3 trường hợp trên [a-zA-Z0-9]
Như trong trường hợp ở ví dụ đầu tiên, nếu muốn chấp nhận cả trường hợp dog/Dog hoặc cat/Cat thì chỉ cần tạo biểu thức như /[dD]og|[cC]at/

Bắt đầu và kết thúc một chuỗi

Sử dụng ký tự ^ để yêu cầu RegEx kiểm tra một chuỗi sẽ bắt đầu như thế nào. Còn để kiểm tra chuỗi kết thúc như thế nào thì sử dụng ký tự $. Giả sử cần kiểm tra Họ/Tên người dùng bắt buộc phải là ký tự và viết hoa chữ cái đầu tiên, ta có thể xây dựng biểu thức /^[A-Z]/. Tương tự cũng có thể áp dụng cho một chuỗi, như trong biểu thức /^Hello/ thì chuỗi đưa vào buộc phải có từ Hello đầu tiên. Ngoài việc dùng để kiểm tra bắt đầu của một chuỗi thì ^ khi đặt trong ngoặc [] cùng với các ký tự thì có nghĩa là sẽ cấm các ký tự đó xuất hiện trong chuỗi. Ví dụ: /[^0-9]/ thì chuỗi nhập vào sẽ không tồn tại các ký tự số.

Một câu đầy đủ phải kết thúc bằng dấu chấm câu (.) … trong trường hợp này, ta dùng ký tự $ trong biểu thức /\.$/ để kiểm tra.

Kiểm tra số lượng các ký tự liên tiếp nhau

Sử dụng các ký tự đặc biệt như *, + và ? để kiểm tra số lượng ký tự.
*  : không có hoặc có nhiều
+ : tối thiểu có một
? : hoặc có hoặc không

Ví dụ:
Chuỗi có một bl , có thể không có hoặc có nhiều ký tự ‘a’ liên tiếp nhau

/bla*/ -> bl, bla, blaaa, blaaaaaaa

Chuỗi có tối thiểu một bl , hoặc có nhiều ký tự ‘a’ liên tiếp nhau

/bla+/ ->  bla, blaaaaaa

Chuỗi hoặc có ‘a’ hoặc không có

/bla?/ ->  bl, bla

Ngoài ra để kiểm tra chính xác số ký tự xuất hiện liên tiếp nhau, ta có thể sử dụng ngoặc ().

Ví dụ:

/o{2}/  -> boom

Chuỗi tồn tại từ  2 đến 4 ký tự ‘o’ liên tiếp nhau

/o{2,4}/ ->  booom

/chuỗi tồn tại từ 2 ký tự ‘o’ trở lên

/o{2,}  ->  booooom

Tổng kết

Việc xây dựng một biểu thức kiểm tra cho phù hợp với các yêu cầu khác nhau đôi khi khá phức tạp. May mắn là lập trình viên Ryan Swanson đã giúp chúng ta bằng cách xây dựng một website cho phép bạn tự xây dựng và kiểm tra biểu thức của mình một cách trực tuyến mà không cần phải build code.   Ngoài ra bạn cũng có thể tham khảo các ví dụ có sẵn ở đây và có thể submit biểu thức của mình để chia sẻ với mọi người.

2 thoughts on “[AS3] Sử dụng Regular Expression

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s