(Post 19/06/2006) Kiểm tra tính hợp lệ của
các biểu mẫu là yếu tố rất quan trọng trong việc lập trình web. Trong
bài này, tôi muốn giới thiệu đến các bạn cách dùng Regular Expression
(RE) trong PHP để kiểm tra người dùng có nhập một địa chỉ e-mail hợp lệ
hay không.
Trong PHP, tập hàm RE được chia làm 2 loại:
- Hàm ereg: Cú pháp biểu thức chứa qui tắc chuẩn của PHP.
- Các hàm preg: Cú pháp biểu thức chứa qui tắc tương thích với perl.
Thực hành:
Như các bạn đã biết, địa chỉ e-mail có dạng: username@domain.extension,
ví dụ hameo87@gmail.com. Với một địa chỉ e-mail, thông thường có một phần
mở rộng, ta sẽ viết:
eregi('^[a-zA-Z0-9._-]+@[a-zA-Z0-9-] +\.[a-zA-Z.]{2,5}$',
$email)
Tách ví dụ thành 3 phần nhỏ để dễ hiểu hơn:
- ^[a-zA-Z0-9._-]+@: Phần này có nhiệm vụ kiểm tra phần username của
e-mail. Dấu mũ “^” ở đầu báo hiệu nơi bắt đầu chuỗi, nếu thiếu nó,
người dùng có thể gõ bất kỳ thứ gì trước địa chỉ e-mail. Những ký
tự trong dấu ngoặc vuông là những ký tự cho phép. Ta chấp nhận các
chữ cái thường và hoa từ A đến Z, các chữ số từ 0 đến 9 và dấu chấm
“.”, dấu gạch dưới “_”, dấu gạch trên “-”. Dấu cộng “+” ký tự “@”,
sau ngoặc vuông đòi hỏi phải có một hoặc nhiều hơn một ký tự thuộc
phạm vi cho phép trong dấu ngoặc vuông, vì vậy người dùng bắt buộc
phải nhập phần username trong địa chỉ e-mail. Việc giới hạn số ký
tự, ta sẽ xét ở phần sau. Cuối cùng, chữ @ cũng là chữ @ bình thường
trong địa chỉ e-mail.
- [a-zA-Z0-9._-]+\.: Phần này cũng tương tự như kiểm tra username,
và dấu cộng sau ngoặc buộc người dùng phải nhập tên miền của địa chỉ
e-mail, ở cuối là một dấu “\” trước dấu “.” báo cho biểu thức rằng
có một dấu chấm được yêu cầu tại vị trí này. Ý nghĩa của dấu “\” để
thông báo đây là ký tự bình thường để tránh hiểu nhầm với ký tự “.”
đứng một mình, sẽ được hiểu như một ký tự điều khiển cho biết tại
vị trí đó có thể nhập ký tự bất kỳ.
- [a-zA-Z]{2,4}$: Phần này để kiểm tra phần mở rộng là phần cuối của
biểu thức. Chúng ta chỉ cho phép các ký tự hoa, thường từ “A” đến
“Z” thay vì dùng dấu cộng, ta dùng ngay {2,4} sau ngoặc vuông để qui
định số ký tự tối thiểu và tối đa cho tên miền là 2 và 4 ( VD: vn,
net, org ...). Cuối cùng kýá tự $ có nghĩa là kết thúc chuỗi, người
dùng không thể nhập thêm gì phía sau tên miền.
Như vậy là bạn đã biết cách kiểm tra biểu thức e-mail
rồi nhé, với loại e-mail có tên miền cấp II (VD: abcd@pmail.vnn.vn ),
bạn cũng làm tương tự.
Một số số ký hiệu khác trong cú pháp cơ bản:
- ?: Yêu cầu 0 hoặc 1 ký tự đứng trước.
- *: Yêu cầu 0 hoặc nhiều ký tự đứng trước.
- +: Yêu cầu 1 hoặc nhiều ký tự đứng trước.
- {a}: Yêu cầu a kýá tự đứng trước.
- {a,b}: Yêu cầu từ a đến b ký tự đứng trước.
- {a,}: Yêu cầu lớn hơn hoặc bằng a ký tự đứng trước.
- . : Bất kỳ ký tự nào.
- (a|b): a hoặc b.
- \s: Xóa sạch khoảng trắng.
Nguyễn Thái Hà
(theo Echip) |