Bài 03: Các quy tắc Regular Expression căn bản P2

Regular Expression 05/02/2017 06:42 762
Trong bài số 02 mình đã trình bày một cách cơ bản nhất các quy tắc cơ bản trong Regular Expression. Ở bài viết này mình sẽ giải đáp và có thêm các ví dụ để các bạn lắm được các quy tắc cơ bản trong Regular Expression.

1. Ký tự bắt đầu và kết thúc

Dùng ký tự bắt đầu ^ và ký tự kết thúc $ đặt vào đầu và cuối chuỗi $pattern, nếu so khớp hoàn toàn từ đầu tới cuối thì là đúng.

Ví dụ: Kiểm tra trong subject cơ bằng regex không

$pattern = '/^regex$/';
$subject = 'regex';
if (preg_match($pattern, $subject)){
	echo 'Chuỗi regex so khớp';
}

Run

 

2. Phạm vi của chuỗi

Kiểm tra một chuỗi có phải là chữ cái in thường hay không thì ta sẽ dùng ký hiệu [min-max], trong đó min là ký tự bắt đầu, max là ký tự kết thúc. Hoặc [list_chars] trong đó list_chars là danh sách các ký tự cho phép.

Ví dụ: Kiểm tra có phải chữ cái in thường

$pattern = '/[a-z]/';
$subject = 'regular';
if (preg_match($pattern, $subject)){
 echo 'Chuỗi regex so khớp';
}

  Run

 

Ví dụ: Kiểm tra có phải chữ cái in hoa

$pattern = '/[A-Z]/';
$subject = 'REGULAR';
if (preg_match($pattern, $subject)){
 echo 'Chuỗi regex so khớp';
}

  Run

 

Ví dụ: Kiểm tra một ký tự là chữ số

$pattern = '/[0-9]/';
$subject = 'd';
if (preg_match($pattern, $subject)){
 echo 'Chuỗi regex so khớp';
}

  Run

 

Ví dụ: Kiểm tra một ký tự là in hoa hoặc in thường

$partern = '/[a-zA-Z]/';
$subject = 'RegularExpression';
if (preg_match($partern, $subject)){
 echo 'Chuỗi regex so khớp';
}

  Run

 

Ví dụ: Pattern là chữ a hoặc số 2 hoặc chữ b

Trong trường hợp này, chúng ta ko sử dụng kí hiệu [min. max] để định nghĩa

Nên Regular Expression sẽ hiểu là một trong các ký tự, tức là nếu:

  • $subject có chứa ký tự a
  • $subject có chứa ký tự 2
  • $subject có chứa ký tự b

Thì regex sẽ trả về đúng.

$pattern = '/[a2b]/';
$subject = 'a';
if (preg_match($pattern, $subject)){
 echo 'Chuỗi regex so khớp';
}
  Run

3. Xác định chiều dài của chuỗi

Kiểm tra chiều dài của một chuỗi thì ta sẽ dùng ký hiệu {min-max}, trong đó min là chiều dài tối thiểu, max là chiều dài tối đa.

Ví dụ: Kiểm tra $pattern là chữ in thường từ 5 đến 10 ký tự

$pattern = '/^[a-z]{5,10}$/';
$subject = 'chiasephp';
if (preg_match($pattern, $subject)){
 echo 'Chuỗi regex so khớp';
}

  Run

 

Ví dụ: Kiểm tra pattern là chữ số từ 3 đến 10 ký tự

$pattern = '/^[0-9]{3,10}$/';
$subject = '123456789';
if (preg_match($pattern, $subject)){
	echo 'Chuỗi regex so khớp';
}

  Run

 

Ví dụ: Kiểm tra pattern là chữ in thường có 5 ký tự

// cách 1:
$pattern = '/^[a-z]{5,5}$/';
$subject = 'sssss';
if (preg_match($pattern, $subject)){
	echo 'Chuỗi regex cách 1 so khớp';
}
// cách 2:
$pattern = '/^[a-z]{5}$/';
$subject = 'sssss';
if (preg_match($pattern, $subject)){
	echo 'Chuỗi regex cách 2 so khớp';
}

  Run

 

4. Khai báo 1 kí tự bất kì

Để khai báo 1 kí tự bất kì chúng ta dùng ki hiệu dấu chấm .

Ví dụ: Kiểm tra $pattern là ký tự bất kỳ dài từ 5 đến 10 ký tự

$pattern = '/^.{5,10}$/';
$subject = 'www.chiasephp.net';
if (preg_match($pattern, $subject)){
	echo 'Chuỗi regex so khớp';
}

  Run

 

5. Tổng kết

Chúng ta sẽ tiếp tục tìm hiểu thêm 1 số quy tắc khác và cách sử dụng Regular Expression trong bài tiếp theo.

Xem Thêm

Profile photo of adminTheHalfHeart

B.V.T

Sinh ra và lớn nên ở Bắc Giang. Hiện tại thì tôi đang là một lập trình viên tại VietISO. Tôi lập website này với mục đích là bookmark những gì tôi đã đọc qua và mong muốn chia sẻ những gì tôi biết.