首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 正則表達式 REGEXP 完整指南:語法、元字符、實戰示例與 LIKE 對比

     編輯:MySQL 綜合教學

MySQL 正則表達式(REGEXP)深度解析

REGEXP 是 MySQL 強大的模式匹配工具,返回 1(匹配)或 0(不匹配),功能遠超 LIKE,相當於 LIKE '%%' 但支援完整正則語法。

核心元字符速查表

元字符含義示例匹配示例
^行首'abc' REGEXP '^a'1
$行尾'abc' REGEXP 'c$'1
.任意單字符'abc' REGEXP 'a.c'1
*前字符 0~n 次'ac' REGEXP 'ab*c'1
+前字符 1~n 次'abc' REGEXP 'ab+c'1
?前字符 0/1 次'ac' REGEXP 'ab?c'1
[...]字符集合'a' REGEXP '[abc]'1
[^...]排除字符集'd' REGEXP '[^abc]'1
|或'a' REGEXP 'a|b'1
(...)分組'abab' REGEXP '(ab)+'1
{n},{n,},{n,m}量詞精確/至少/範圍'aaa' REGEXP 'a{2,3}'1
[:class:]字符類'a1' REGEXP '[[:digit:]]'1

實戰示例

-- 1. 以特定前綴開頭
SELECT 'username' REGEXP '^user';  -- 1

-- 2. 以特定後綴結尾
SELECT 'image.png' REGEXP '\.png$'; -- 1 (轉義點)

-- 3. 包含數字
SELECT 'abc123' REGEXP '[0-9]';    -- 1

-- 4. 純數字驗證
SELECT '12345' REGEXP '^[0-9]+$';  -- 1

-- 5. 手機號簡易驗證
SELECT '13800138000' REGEXP '^1[3-9][0-9]{9}$'; -- 1

-- 6. 郵箱簡易驗證
SELECT 'test@example.com' REGEXP '^[^@]+@[^@]+\.[^@]+$'; -- 1

-- 7. 替換 LIKE '%關鍵字%'(性能更好)
SELECT col FROM t WHERE col REGEXP '關鍵字';

REGEXP vs LIKE 性能與選型建議

維度LIKEREGEXP
語法複雜度簡單(%、_)完整正則
前綴匹配用索引支持 LIKE 'abc%'不支持索引
複雜模式無法表達靈活強大
執行速度快(簡單模式)較慢(需正則引擎)

最佳實踐:
• 簡單前綴/後綴/全匹配用 LIKE 利用索引
• 複雜格式驗證、提取、替換用 REGEXP
• 大數據量避免 REGEXP 全表掃描,考慮全文索引或應用層預處理

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved