Bỏ qua đến nội dung chính
FreeOnlineTools Go
Tiếng Việt
explanation

Biểu thức Chính quy Là Gì? Giải thích Đầy đủ

By FreeOnlineTools Team · Updated 2026-09-02

Quick Answer

Regular expression là pattern mô tả một tập chuỗi. Nó dùng literal character và metacharacter (*, +, ?, ., ^, $, [], (), {}, |, \) với ý nghĩa đặc biệt. Regex dùng cho validation, search, extraction và replacement. Dùng Regex Tester miễn phí.

Introduction

Regular expression (regex hoặc regexp) là chuỗi ký tự định nghĩa pattern search. Pattern được dùng bởi thuật toán string-searching để tìm, match hoặc replace văn bản. Regular expression xuất xứ từ lý thuyết ngôn ngữ formal thập niên 1950 (Stephen Kleene) và được adopt vào công cụ văn bản Unix (grep, sed, awk) thập niên 1970. Hôm nay regex được built-in vào thực tế mọi ngôn ngữ lập trình và editor.

Step by Step

  1. Understand literal and metacharacters

    Literal characters (a, b, 1, @) match themselves. Metacharacters have special meanings: . matches any character, * means zero or more, + means one or more, ? means zero or one, ^ matches start, $ matches end.

  2. Learn character classes

    Square brackets [] define a character class — [aeiou] matches any vowel, [0-9] matches any digit, [^0-9] matches any non-digit. Shorthand classes: \d (digit), \w (word character), \s (whitespace), and their uppercase negations.

  3. Use quantifiers

    Quantifiers specify how many times a pattern repeats: * (0+), + (1+), ? (0 or 1), {n} (exactly n), {n,} (n+), {n,m} (n to m). Greedy by default; add ? for lazy matching (e.g., *?).

  4. Group and anchor

    Parentheses () create capture groups. Alternation | matches either side (cat|dog). Anchors ^ and $ match start and end of string. Use these to build complex patterns from simpler ones.

Examples

Match an email-like pattern

Input: Pattern: [a-z]+@[a-z]+\.[a-z]+

Output: Matches: alice@example.com, bob@test.org

Match a phone number format

Input: Pattern: \d{3}-\d{3}-\d{4}

Output: Matches: 555-123-4567

Extract key-value pairs

Input: Pattern: (\w+)=(\w+)

Output: Matches 'key=value' with group 1 as key, group 2 as value

Common Problems

  • Greedy matching over-consumes —.* matches as much as possible. Use .*? for lazy matching to find the shortest match.
  • Forgetting to escape special characters —., *, +, ?, etc. are special. Use \ to match them literally (e.g., \. matches a literal dot).
  • Catastrophic backtracking —patterns with nested quantifiers (e.g., (a+)+) can take exponential time on certain inputs, causing ReDoS attacks.
  • Over-matching —without anchors (^ and $), a pattern matches anywhere. Use ^...$ to match the entire string.

Tips

  • Start simple and add complexity incrementally —debugging a complex regex all at once is very hard.
  • Use a regex tester to experiment with patterns against sample text —see matches highlighted in real time.
  • Comment complex regexes using extended mode (/x flag in some engines) or break them into named parts.
  • Use our Regex Tester to test patterns instantly in your browser —no signup, fully private.

Related Tools

Related Guides

References