Biểu thức chính quy (RegEx) trong PHP

Trong một bài viết về Preg_match_all mình có nhắc đến biểu thức chính quy Regular Expression. Trong bài này chúng ta sẽ cùng tìm hiểu rõ hơn về biểu thức chính quy và cách sử dụng như thế nào.

Regex là gì?

Regex (hoặc RegExp) là viết tắt của Biểu thức chính quy Regular Expression, là cách nhanh chóng và hiệu quả để khớp các mẫu bên trong một chuỗi. Trong bài viết này, chúng ta sẽ tìm hiểu về cách tạo các biểu thức chính quy và cách sử dụng chúng trong các hàm PHP.

Bạn sẽ thường gặp xây dựng các chức năng như tìm kiếm văn bản, tìm kiếm và thay thế văn bản, xác thực đầu vào , vv…

Thực hành với biểu thức chính quy

Một chuỗi Regex được bắt đầu bằng ký tự “/” và kết thúc cũng bới ký tự “/“.

Xem ví dụ sau:

<?php
$string = "Đây là bài học về regex. Bài viết được cập nhật tại https://quynhweb.pro/";
preg_match_all(
    "/[http]/",$string,
    $matches
);
var_dump('<pre>');
print_r($matches);
var_dump('</pre>');

Các ký tự Meta thường dùng

[abc] Khớp với bất cứ ký tự được chứa giữa cặp ngoặc vuông này
[^abc] Khớp với bất kỳ ký tự nào không phải là một trong các ký tự tùy chọn trong cặp dấu ngoặc.
[0-9] Khớp một ký tự trong phạm vi 0 – 9
^ Tìm kết quả khớp ở đầu chuỗi.
| Tìm khớp chuỗi này hoặc chuỗi kia
$ Tìm kết quả khớp ở cuối chuỗi.
? Khớp một mẫu 0 hoặc 1 lần
b Khớp ở đầu một từ hoặc cuối một từ.
* Khớp một mẫu 0 hoặc nhiều lần
+ Khớp một mẫu 1 hoặc nhiều lần
() Xác định một mẫu phụ
{} Xác định một mẫu lặp lại
Khớp một loạt các ký tự
Sử dụng dấu gạch chéo ngược để thoát khởi ký tự đặc biệt

Nhìn vào bảng trên bạn có thể viết ra một mẫu khớp để thực hành ngay.

Ví dụ tìm số 9 ở trong chuỗi

regex-php

Một số ví dụ khớp chuỗi

Khớp URL:

/b(?:(?:https?|ftp)://|www.)[-a-z0-9+&@#/%?=~_|!:,.;]*[-a-z0-9+&@#/%=~_|]/i

Khớp Email:

/[email protected]S+.S+/

Khớp điện thoại:

/(03|05|07|08|09|01[2|6|8|9])+([0-9]{8})b/

Khớp tên tiếng Việt:

/((Đại diện pháp luật:)s?([a-z0-9A-Z_uùúủũụUÙÚỦŨỤưừứửữựƯỪỨỬỮỰeèéẻẽẹêềếểễệEÈÉẺẼẸÊỀẾỂỄỆaàáảãạAÀÁẢÃẠăằắẳẵặâầấẩẫậĂẰẮẲẴẶÂẦẤẨẪẬoòóỏõọOÒÓỎÕỌơờớởỡợƠỜỚỞỠỢôồốổỗộÔỒỐỔỖỘiìíỉĩịIÌÍỈĨỊyỳýỷỹỵYỲÝỶỸỴđĐ]|s)*(?!(<br>)))/

Khớp thẻ HTML:

/^<([a-z]+)([^<]+)*(?:>(.*)</1>|s+/>)$/

Để thực hành bạn hãy vào https://regex101.com/ viết mã Regex sau đó copy một đoạn văn bản để test.

Kết luận: Với bài viết về biểu thức chính quy Regex đã đã thực sự biết cách sử dụng chưa? Hãy thử tập viết một vài mẫu để validate hay tìm một cụm từ xem thế nào nhé. Chúc bạn học tốt!

Related Posts

Namespace trong PHP

Namespace cho phép các lớp / hàm / hằng cùng tên được sử dụng trong các ngữ cảnh khác nhau mà không có bất kỳ xung đột…

Hàm str_split() trong PHP

Bài viết này chúng ta sẽ đi tìm hiểu về hàm str_split(). Một trong những hàm thường được dùng trong PHP. Vậy cách sử dụng str_split() như…

Tạo chức năng sửa xoá thành viên bằng PHP & MySQL

Với một số trang web để quản lý thành viên (user) dễ dàng trong phần quản trị admin bạn phải khởi tạo chức năng sửa xoá thành…

Hàm str_replace trong PHP

Hàm str_replace trong PHP là gì? Hàm str_replace() trong PHP là một hàm được sử dụng để thay thế tất cả các xuất hiện của một chuỗi…

laravel8-vews-1

Views trong Laravel 8

Trong chuỗi series hướng dẫn học Laravel thì Views cũng quan trọng không kém gì so với Controller hay Model. Vậy chúng ta sẽ làm thế nào…

Validate Form trong PHP

Mặc dù trình duyệt hỗ trợ JavaScript để xác thực người dùng cho website. Tuy nhiên nếu JavaScript bị lỗi hoặc tắt đi thì công việc này…