Tan Phat Media

Regex Collection - Bộ Sưu Tập Regex Online

Tổng hợp các Regex thường dùng

Email

Validate email address

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

URL

Validate URL

^(https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})([\/\w .-]*)*\/?$

Phone (VN)

Số điện thoại Việt Nam

^(0|\+84)(3|5|7|8|9)[0-9]{8}$

Phone (US)

US phone number

^\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$

IPv4

IPv4 address

^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

IPv6

IPv6 address

^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$

Date (YYYY-MM-DD)

ISO date format

^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$

Date (DD/MM/YYYY)

Vietnamese date format

^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[0-2])\/\d{4}$

Time (HH:MM)

24-hour time

^([01]?[0-9]|2[0-3]):[0-5][0-9]$

Hex Color

Hex color code

^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$

Username

3-16 chars, alphanumeric + underscore

^[a-zA-Z0-9_]{3,16}$

Password (Strong)

Min 8 chars, upper, lower, number, special

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$

Credit Card

Visa, Mastercard, Amex

^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13})$

CMND/CCCD

CMND (9 số) hoặc CCCD (12 số)

^[0-9]{9}$|^[0-9]{12}$

Slug

URL-friendly slug

^[a-z0-9]+(?:-[a-z0-9]+)*$

HTML Tag

Match HTML tags

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

YouTube URL

YouTube video URL

^(https?:\/\/)?(www\.)?(youtube\.com|youtu\.be)\/.+$

MAC Address

MAC address

^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$

UUID

UUID v4

^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$

Vietnamese Name

Tên tiếng Việt có dấu

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

20 patterns

Hợp tác ngay với Tấn Phát Digital

Chúng tôi không chỉ thiết kế website, mà còn giúp doanh nghiệp xây dựng thương hiệu số mạnh mẽ. Cung cấp dịch vụ thiết kế website trọn gói từ thiết kế đến tối ưu SEO. Hãy liên hệ ngay với Tấn Phát Digital để cùng tạo nên những giải pháp công nghệ đột phá, hiệu quả và bền vững cho doanh nghiệp của bạn tại Hồ Chí Minh.

Thư viện regex thường dùng: 20 pattern kèm ô test trực tiếp

Bộ sưu tập 20 biểu thức chính quy hay dùng nhất khi làm form và xử lý dữ liệu, từ email, URL, IPv4, UUID cho tới số điện thoại di động Việt Nam, số căn cước và tên tiếng Việt có dấu. Mỗi pattern có nút sao chép riêng, và ô nhập text ở đầu trang sẽ chạy thử đồng thời trên cả 20 pattern để bạn thấy ngay cái nào khớp.

Tính năng nổi bật

  • 20 pattern viết sẵn, phủ các nhóm kiểm tra dữ liệu hay gặp nhất trong form
  • Ô nhập text chạy thử cùng lúc trên toàn bộ pattern, gắn nhãn Match hoặc No match cho từng cái
  • Ô tìm kiếm lọc theo tên pattern và theo mô tả, gõ email hay phone là ra ngay
  • Nút sao chép riêng cho từng pattern, dán thẳng vào code không phải bôi đen thủ công
  • Nhóm pattern dành riêng cho dữ liệu Việt Nam: số di động, CMND 9 số và CCCD 12 số, tên có dấu
  • Pattern định dạng ngày theo cả hai kiểu ISO và kiểu Việt Nam, có chặn tháng 13 và ngày 32
  • Hiển thị nguyên văn pattern ở dạng chữ đơn cách, cuộn ngang được với pattern dài
  • Chạy hoàn toàn trên trình duyệt bằng RegExp của JavaScript, text bạn nhập để test không gửi đi đâu

Vì sao nên lấy pattern có sẵn thay vì tự viết lại từ đầu

Viết regex là việc dễ ra kết quả trông đúng nhưng sai ở rìa. Một pattern email tự nghĩ trong năm phút thường bỏ sót dấu cộng trong địa chỉ dạng ten+nhan@gmail.com, hoặc chấp nhận cả chuỗi thiếu tên miền cấp cao. Pattern IPv4 tự viết kiểu ba nhóm chữ số cách nhau bằng dấu chấm sẽ nhận luôn 999.999.999.999. Những lỗi này không làm chương trình chạy sai ngay, chúng nằm im cho tới khi có người nhập dữ liệu lạ. Lấy pattern đã được dùng rộng rãi rồi tự test lại với dữ liệu thật của mình nhanh hơn và ít rủi ro hơn. Điểm mạnh của trang này là ô test nằm ngay trên danh sách: bạn dán một chuỗi vào, cả 20 pattern đều chấm điểm cùng lúc, nên bạn còn phát hiện được những trường hợp một chuỗi khớp nhiều pattern cùng lúc, thứ mà thử từng cái rời rạc rất khó thấy.

Lợi ích khi sử dụng

  • Thấy kết quả khớp hay không khớp ngay tại chỗ, không phải mở thêm công cụ test riêng
  • Tránh được các lỗi biên kinh điển của pattern tự viết như IPv4 nhận số lớn hơn 255
  • Có sẵn nhóm pattern cho dữ liệu Việt Nam mà thư viện nước ngoài không có
  • Đọc pattern có sẵn là cách học cú pháp regex nhanh hơn đọc tài liệu lý thuyết
  • Không cần đăng ký, không lưu chuỗi bạn dán vào để test

Cách dùng thư viện regex

  1. 1Gõ từ khóa vào ô tìm kiếm, ví dụ phone, date hay color, danh sách bên dưới lọc ngay theo tên và mô tả pattern.
  2. 2Dán một chuỗi dữ liệu thật vào ô nhập text để test, mỗi pattern sẽ hiện nhãn Match màu xanh hoặc No match màu đỏ.
  3. 3Thử thêm vài chuỗi biên, ví dụ số điện thoại viết dạng +84 hay email có dấu cộng, để xem pattern có chịu đúng trường hợp của bạn không.
  4. 4Bấm nút sao chép ở cạnh phải thẻ pattern để lấy nguyên văn biểu thức vào clipboard.
  5. 5Dán vào code và bọc lại theo cú pháp của ngôn ngữ đang dùng, nhớ nhân đôi dấu gạch chéo ngược nếu bạn đặt pattern trong chuỗi thay vì trong ký pháp regex nguyên bản.

Cách đọc một pattern trong danh sách

Gần như mọi pattern ở đây đều mở bằng dấu mũ và đóng bằng dấu đô la, nghĩa là chúng đòi toàn bộ chuỗi phải khớp chứ không chấp nhận khớp một phần. Đây là điều bạn cần biết trước khi dán vào code: nếu mục đích của bạn là tìm mọi email nằm rải rác trong một đoạn văn bản dài thì phải bỏ hai neo này đi và thêm cờ g, còn giữ nguyên thì chỉ hợp cho kiểm tra một ô nhập liệu. Ngoại lệ duy nhất là pattern HTML Tag, nó cố ý không có neo vì mục đích là quét thẻ nằm giữa văn bản. Các ký hiệu lặp lại nhiều nhất trong danh sách gồm dấu cộng nghĩa là một lần trở lên, dấu sao nghĩa là không lần nào cũng được, cặp ngoặc nhọn kèm số nghĩa là đúng bấy nhiêu ký tự, và dấu gạch đứng nghĩa là hoặc. Riêng cụm mở đầu bằng dấu hỏi và dấu bằng trong pattern mật khẩu là lookahead, nó kiểm tra điều kiện mà không tiêu thụ ký tự nào, nhờ vậy mới ghép được bốn yêu cầu độ mạnh vào một biểu thức duy nhất.

Nhóm pattern dành cho dữ liệu Việt Nam

Pattern số điện thoại Việt Nam trong danh sách nhận đầu số bắt đầu bằng 0 hoặc bằng +84, theo sau là một chữ số thuộc nhóm 3, 5, 7, 8, 9 rồi tám chữ số nữa. Đây là quy ước đầu số di động sau đợt chuyển từ mười một số về mười số. Cần lưu ý pattern này cố tình không nhận số máy bàn có mã vùng, cũng không nhận tổng đài 1900 và 1800, nên nếu form của bạn cho phép nhập số cố định thì phải viết thêm nhánh riêng. Pattern giấy tờ tùy thân nhận hai độ dài là chín chữ số cho chứng minh nhân dân cũ và mười hai chữ số cho căn cước công dân, không nhận độ dài nào khác ở giữa. Pattern tên tiếng Việt là biểu thức dài nhất trong bộ, nó liệt kê thẳng toàn bộ ký tự có dấu ở cả dạng hoa và dạng thường, đòi mỗi tiếng viết hoa chữ đầu và các tiếng cách nhau đúng một khoảng trắng, nên chuỗi viết hoa toàn bộ hoặc viết thường toàn bộ đều bị loại.

Ba lỗi làm regex chạy đúng trên trang này nhưng sai trong code

Lỗi thứ nhất là dấu gạch chéo ngược. Trên trang, pattern hiển thị đúng như khi bạn viết trong ký pháp regex nguyên bản. Nếu bạn dán nó vào một chuỗi trong Java, C# hay Python mà không dùng chuỗi thô, mỗi dấu gạch chéo ngược phải viết thành hai. Lỗi thứ hai là cờ. Ô test trên trang tạo biểu thức không kèm cờ nào, tức là phân biệt hoa thường và chỉ tìm một lần. Trong code nếu bạn thêm cờ i thì pattern tên tiếng Việt sẽ mất tác dụng vì nó dựa vào chữ hoa để tách tiếng. Lỗi thứ ba là khác biệt giữa các ngôn ngữ: PHP cần cặp dấu phân định bao quanh pattern khi dùng preg_match, Python dùng hàm fullmatch mới tương đương với việc có sẵn hai neo, còn phương thức match của Java mặc định đã neo hai đầu nên hai dấu neo trong pattern trở thành thừa. Cách kiểm tra nhanh nhất là chạy lại đúng chuỗi bạn vừa test ở đây trong môi trường thật trước khi đưa lên bản chính thức.

Regex làm được gì và khi nào nên dừng lại

Regex mạnh với dữ liệu có hình dạng cố định: mã bưu chính, biển số, ngày tháng, địa chỉ MAC, mã UUID. Nó yếu ngay khi cấu trúc lồng nhau, vì vậy đừng dùng regex để bóc tách HTML hay JSON dù pattern HTML Tag trong danh sách có vẻ gợi ý điều ngược lại. Pattern đó chỉ hợp cho việc quét nhanh xem một đoạn văn bản có chứa thẻ nào không, còn phân tích cây tài liệu thì phải dùng bộ phân tích cú pháp. Một giới hạn khác đáng lưu tâm là regex chỉ kiểm tra hình dạng, không kiểm tra tính hợp lệ về ngữ nghĩa. Pattern ngày tháng chấp nhận 31 tháng 2 vì nó không biết tháng nào có bao nhiêu ngày. Pattern thẻ tín dụng chỉ soi độ dài và mấy chữ số đầu, không chạy thuật toán Luhn nên không phát hiện được số thẻ bịa. Pattern email đúng cú pháp không bảo đảm hộp thư tồn tại. Với những trường hợp này, regex chỉ nên là lớp lọc đầu tiên, phía sau vẫn cần kiểm tra bằng thư viện chuyên trách hoặc bằng bước xác nhận thật.

Cẩn thận với backtracking khi pattern gặp chuỗi dài

Có một dạng lỗi hiệu năng đặc thù của regex tên là catastrophic backtracking. Nó xảy ra khi một nhóm có thể lặp lại lồng trong một nhóm cũng có thể lặp lại, khiến bộ máy phải thử số tổ hợp tăng theo cấp số nhân trước khi kết luận là không khớp. Một chuỗi vài chục ký tự cũng đủ làm luồng xử lý treo hàng giây, và nếu pattern đó nằm ở tầng máy chủ thì đây trở thành lỗ hổng từ chối dịch vụ. Trong bộ pattern ở đây, cái đáng chú ý nhất là pattern URL vì nó chứa nhóm lặp lồng nhau, còn pattern HTML Tag cũng có cấu trúc tương tự. Cách phòng thủ đơn giản mà hiệu quả là giới hạn độ dài chuỗi trước khi đưa vào kiểm tra: một địa chỉ email hợp lệ không dài quá 254 ký tự, một URL cần kiểm tra trong form hiếm khi vượt 2000 ký tự. Thêm một câu kiểm tra độ dài trước lệnh test sẽ chặn hầu hết rủi ro mà không phải viết lại pattern.

Câu hỏi thường gặp (FAQ)

Pattern trong danh sách có neo đầu cuối sẵn chưa?

Hầu hết đã có dấu mũ ở đầu và dấu đô la ở cuối, tức là đòi khớp toàn bộ chuỗi, phù hợp cho kiểm tra một ô nhập liệu. Riêng pattern HTML Tag không có neo vì nó dùng để quét thẻ nằm giữa văn bản. Nếu bạn cần tìm nhiều kết quả trong một đoạn dài, hãy bỏ hai neo và thêm cờ g.

Ô test trên trang chạy pattern với cờ nào?

Không cờ nào cả. Công cụ tạo biểu thức từ chuỗi pattern rồi gọi hàm test, nên phép so khớp phân biệt chữ hoa chữ thường và chỉ trả về đúng hoặc sai. Nếu trong code bạn thêm cờ i hay m thì kết quả có thể khác với những gì thấy ở đây, rõ nhất là pattern tên tiếng Việt vốn dựa vào chữ hoa.

Pattern số điện thoại có nhận số máy bàn không?

Không. Pattern chỉ nhận đầu số di động bắt đầu bằng 0 hoặc +84 rồi tới một chữ số thuộc nhóm 3, 5, 7, 8, 9 và tám chữ số tiếp theo. Số cố định có mã vùng, tổng đài 1900 và 1800 đều bị loại. Nếu form của bạn cho nhập cả số bàn, hãy viết thêm một nhánh riêng nối bằng dấu gạch đứng.

Vì sao email của tôi hợp lệ mà pattern báo No match?

Pattern email ở đây là bản rút gọn phủ phần lớn địa chỉ thông dụng, không phải bản đầy đủ theo chuẩn RFC 5322 vốn dài hàng trăm ký tự. Địa chỉ chứa dấu ngoặc kép, ký tự Unicode trong phần tên miền, hoặc tên miền quốc tế hóa sẽ không khớp. Với hệ thống thật, cách kiểm tra chắc chắn nhất vẫn là gửi thư xác nhận.

Pattern ngày tháng có chặn được ngày 31 tháng 2 không?

Không. Pattern chỉ kiểm tra hình dạng nên nó chấp nhận tháng từ 01 đến 12 và ngày từ 01 đến 31, không biết tháng nào ngắn tháng nào dài, cũng không xử lý năm nhuận. Muốn chắc chắn ngày có thật, sau khi qua regex bạn phải dựng lại đối tượng ngày trong ngôn ngữ đang dùng và so lại từng thành phần.

Pattern thẻ tín dụng có kiểm tra được thẻ thật không?

Không. Nó chỉ soi độ dài và mấy chữ số mở đầu để phân biệt Visa, Mastercard và Amex. Một dãy số bịa nhưng đúng độ dài vẫn khớp. Muốn lọc kỹ hơn phải chạy thêm thuật toán Luhn để kiểm tra chữ số kiểm tra cuối, còn xác nhận thẻ có tồn tại và còn hạn thì bắt buộc phải hỏi qua đơn vị thanh toán.

Dán pattern vào Python hay Java thì cần sửa gì?

Chủ yếu là chuyện gạch chéo ngược. Nếu bạn đặt pattern trong chuỗi thường thì mỗi dấu gạch chéo ngược phải viết thành hai, dùng chuỗi thô của Python thì giữ nguyên được. Ngoài ra hàm match của Python chỉ neo đầu nên nên dùng fullmatch, còn phương thức matches của Java mặc định đã neo hai đầu khiến hai dấu neo trong pattern thành thừa.

Pattern tên tiếng Việt vì sao không nhận tên viết hoa toàn bộ?

Vì pattern quy định mỗi tiếng phải mở đầu bằng đúng một chữ hoa rồi tới các chữ thường, nhằm bắt đúng cách viết tên chuẩn trong giấy tờ. Chuỗi viết hoa toàn bộ hoặc viết thường toàn bộ đều bị loại, tên không dấu cũng bị loại nếu ký tự nằm ngoài danh sách. Muốn dễ dãi hơn, bạn phải sửa lại lớp ký tự trong pattern.

Pattern mật khẩu mạnh dựa trên tiêu chí nào?

Nó dùng bốn lookahead để đòi chuỗi có ít nhất một chữ thường, một chữ hoa, một chữ số và một ký tự đặc biệt trong nhóm liệt kê sẵn, đồng thời dài tối thiểu tám ký tự. Đây là mức tối thiểu chấp nhận được chứ chưa phải bảo đảm an toàn, vì mật khẩu nằm trong danh sách rò rỉ vẫn có thể khớp toàn bộ điều kiện này.

Regex có thể làm treo ứng dụng không?

Có, khi pattern chứa nhóm lặp lồng trong nhóm lặp và gặp chuỗi dài không khớp, bộ máy phải thử số tổ hợp tăng theo cấp số nhân. Trong bộ này pattern URL và HTML Tag có cấu trúc dễ dính nhất. Cách phòng đơn giản là kiểm tra độ dài chuỗi trước khi đưa vào regex, chặn ngay những chuỗi dài bất thường.

Có nên dùng pattern HTML Tag để bóc nội dung trang web không?

Không nên. HTML cho phép thẻ lồng nhau nhiều tầng, thuộc tính chứa dấu ngoặc, thẻ tự đóng và thẻ viết thiếu, những thứ regex không mô tả được. Pattern này chỉ hợp để kiểm tra nhanh xem một đoạn văn bản có chứa thẻ hay không. Muốn bóc dữ liệu thật thì phải dùng bộ phân tích cú pháp của ngôn ngữ đang dùng.

Chuỗi tôi dán vào để test có bị lưu lại không?

Không. Toàn bộ việc so khớp chạy bằng JavaScript ngay trong trình duyệt, công cụ không có bước gửi dữ liệu lên máy chủ. Dù vậy vẫn nên tránh dán mật khẩu thật hay dữ liệu khách hàng vào bất kỳ trang web nào, thay bằng chuỗi giả có cùng hình dạng là đủ để kiểm tra pattern.

Từ khóa liên quan

  • regex collection
  • thư viện regex
  • regex thường dùng
  • biểu thức chính quy
  • regex kiểm tra email
  • regex số điện thoại việt nam
  • regex validate url
  • regex kiểm tra ngày tháng
  • regex mật khẩu mạnh
  • regex ipv4
  • regex uuid
  • regex mac address
  • regex slug url
  • regex mã màu hex
  • regex cccd cmnd
  • regex tên tiếng việt có dấu
  • test regex online
  • regex cheat sheet tiếng việt
  • cách viết regular expression
  • regex validate form

Công cụ Developer Tools liên quan

.env Generator

Tạo file .env và .env.example cho dự án.

.gitignore Generator

Tạo .gitignore cho Node.js, Python, Java.

API Mock Generator

Tạo mock JSON data cho API testing.

API Response Formatter

Format và phân tích API response.

API Tester

Test REST API: GET, POST, PUT, DELETE.

Postman Alternative - API Testing Tool Online với Collections, Environment & File Upload

Postman Alternative miễn phí - Test APIs với Collections, Multiple Environments, Pre-request Scripts, Collection Runner, File Upload (form-data), Tests/Assertions, Code Generation (cURL, JS, Python, Node.js). Browser-based, không cần cài đặt. Save requests, export/import collections, auto-save history. Hỗ trợ Bearer Token, Basic Auth, API Key. Hoàn hảo cho API development và testing.

Swagger API Tester - Test API với OpenAPI/Swagger Spec & Authentication Online

Swagger API Tester miễn phí - Import OpenAPI/Swagger specification và test API endpoints với đầy đủ authentication (Bearer Token/JWT, Basic Auth, API Key). Hỗ trợ OpenAPI 3.0, Swagger 2.0, auto-parse endpoints, parameters, request body. Giao diện như Swagger UI với color-coded methods, grouped endpoints, real-time testing. Hoàn hảo cho API development, testing, debugging secured APIs.

Base Converter

Chuyển đổi Binary, Hex, Base32.

Base64 Encoder

Mã hóa/giải mã Base64.

Binary Converter

Chuyển đổi Decimal, Binary, Hex.

Box Shadow Generator

Tạo CSS box-shadow trực quan.

Chmod Calculator

Tính quyền file Linux.

Dịch vụ của Tấn Phát Digital

Đang xây sản phẩm và cần thêm người làm phần nặng?

Gói giải pháp doanh nghiệp

Nền tảng custom cho ngân hàng, y tế và sàn B2B, chuẩn ISO 27001, GDPR, PCI-DSS, SLA 99.99%.

Từ 50.000.000đXem chi tiết →

Dịch vụ phát triển Blockchain & Web3

Smart contract, dApp và NFT marketplace đa chuỗi, audit bảo mật đầy đủ trước khi lên mainnet.

Từ 50.000.000đXem chi tiết →

Dịch vụ thiết kế website tại Hồ Chí Minh

Website doanh nghiệp, bán hàng và đặt lịch, chuẩn SEO ngay từ cấu trúc, tốc độ tải dưới 3 giây.

Từ 5.000.000đXem chi tiết →

Dịch vụ thiết kế landing page

Trang đích riêng cho từng chiến dịch quảng cáo, tỷ lệ chuyển đổi 3–8%, bàn giao trong 5–21 ngày.

Từ 3.000.000đXem chi tiết →

Tư vấn và báo giá miễn phí trong 24 giờ. Xem toàn bộ dịch vụ

Zalo
Facebook
Tấn Phát Digital
Zalo
Facebook