7. Kí hiệu đặc biệt cho các từ khoá Regex

Để khai báo kí hiệu đặc biệt chúng ta cần thêm dấu \ để phân biệt.

// Dấu chấm là ký tự đặc biệt trong regex nên phải thêm dấu \
$partern = '/\./';
$subject = 'demo';
if (preg_match($partern, $subject)){
    echo 'Chuỗi regex so khớp';
}

8. Khai báo kí tự này hoặc kí tự khác

Để khai báo chuỗi có thể có kí tự này hoặc kí tự khác chúng ta sử dụng dấu |.

// Kiểm tra chuỗi pattern có kí tự A hoặc B không
$pattern = '/^A|B$/';
$subject = 'A';
if (preg_match($pattern, $subject)){
    echo 'Chuỗi regex so khớp';
}

9. Gộp, nhóm Regex

Để gộp, nhóm Regex lại cho dễ nhìn, chúng ta sử dụng ().

// Gộp nhóm A hoặc B lại thành 1 nhóm
$pattern = '/(A|B)/';
$subject = 'A';
if (preg_match($pattern, $subject)){
    echo 'Chuỗi regex so khớp';
}

10. Khai báo 1 chuỗi có độ dài không giới hạn

Ở phần trước chúng ta sử dụng {min,max} để khai báo, tuy nhiên có cách khác ngắn gọn hơn, là sử dụng các kí tự: * + ? Kí tự * đại diện cho không hoặc nhiều kí tự

// Kiểm tra chuỗi trống hoặc có những chữ cái in thường
//Cách 1:
$pattern = '/[a-z]*/';
$subject = 'dsada';
if (preg_match($pattern, $subject)){
    echo 'Chuỗi regex so khớp';
}

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

Kí tự + đại diện cho 1 hoặc nhiều kí tự

// kiểm tra chuỗi có ít nhất 1 ký tự chữ in thường
// Cách 1:
$pattern = '/[a-z]+/';
$subject = 's';
if (preg_match($pattern, $subject)){
    echo 'Chuỗi regex so khớp';
}

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

Kí tự ? đại diện cho 1 hoặc không có kí tự nào

// Kiểm tra chuỗi có 1 hoặc không có ký tự thường nào
// Cách 2
$pattern = '/[a-z]?/';
$subject = 's';
if (preg_match($pattern, $subject)){
    echo 'Chuỗi regex so khớp';
}

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

11. Regex phủ định

Để phủ định 1 regex chúng ta sử dụng kí tự ^.

// Kiểm tra chuỗi không có ký tự số
$pattern = '/[^0-9]{1,2}/';
$subject = 'sd';
if (preg_match($pattern, $subject)){
    echo 'Chuỗi regex so khớp';
}

12. 1 số kí tự Regex đặc biệt

  • \d - Chữ số bất kỳ ~ [0-9]
  • \D - Ký tự bất kỳ không phải là chữ số (ngược với \d) ~ [^0-9]
  • \w - Ký tự từ a-z, A-Z, hoặc 0-9 ~ [a-zA-Z0-9]
  • \W - Ngược lại với \w (nghĩa là các ký tự không thuộc các khoảng: a-z, A-Z, hoặc 0-9) ~[^a-zA-Z0-9]
  • \s - Khoảng trắng (space)
  • \S - Ký tự bất kỳ không phải là khoảng trắng.

13. Kiểm tra chuỗi trong Laravel Validation

Chúng ta sử dụng rule regex mà Laravel đã hỗ trợ sẵn.

/**
 * Store a new user.
 *
 * @param  Request  $request
 * @return Response
 */
public function store(Request $request)
{
    $this->validate($request, [
        'username' => 'required|unique:users|max:255',
        'body' => 'required|regex:/^[0-9]+-[0-9]+-[0-9]+$/'
    ]);

    // The user is valid, store in database...
}

Như vậy chúng ta đã tìm hiểu về các rules cơ bản của Regular Expresion. :)