首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 正則表達式入門:常見元字元、修飾符與實用模式速查

     編輯:程式設計綜合問答

核心元字元速查表

符號含義示例匹配
`.`任意字元 (除換行)`a.b` → `acb`, `a b`
`\d`數字 `[0-9]``\d{3}` → `123`
`\D`非數字`\D+` → `abc`
`\w`單詞字元 `[A-Za-z0-9_]``\w+` → `var_1`
`\W`非單詞字元`\W+` → `@#$`
`\s`空白 (空格、Tab、換行)`\s+` → ` \n`
`\S`非空白`\S+` → `hello`
`^`行首 (多行模式下每行首)`^Hello`
`$`行尾`world$`
`\b`單詞邊界`\bcat\b` → `cat` 不匹配 `category`
`|`或`cat|dog`
`()`分組/捕獲`(\d{4})-(\d{2})`
`(?:)`非捕獲分組`(?:ab)+`
`(?=)`正向前瞻`\w+(?=\d)` → 匹配後面是數字的單詞
`(?!)`負向前瞻`\w+(?!\d)`

量詞 (貪婪/惰性/佔有)

量詞含義惰性版
`*`0 次或多次`*?`
`+`1 次或多次`+?`
`?`0 次或 1 次`??`
`{n}`恰好 n 次`{n}?`
`{n,}`至少 n 次`{n,}?`
`{n,m}`n 到 m 次`{n,m}?`

修飾符 (Flags)


// 字面量寫法
/pattern/gim
// 構造函數寫法
new RegExp('pattern', 'gim')
標誌名稱效果
`g`Global全域匹配 (不停在第一次)
`i`IgnoreCase忽略大小寫
`m`Multiline`^$` 匹配每行首尾
`s`DotAll (ES2018)`.` 匹配含換行
`u`Unicode (ES2015)正確處理 Unicode 代理對
`y`Sticky (ES2015)從 `lastIndex` 緊貼匹配

JS 常用 API


const regex = /\d+/g;
const str = '年 2024 月 01 日';

// 1. test() - 布爾判斷
regex.test(str); // true

// 2. exec() - 單次匹配詳情 (配合 g 迭代)
let match;
while ((match = regex.exec(str)) !== null) {
    console.log(match[0], match.index); // 2024 3, 01 10
}

// 3. match() - 字串方法
str.match(regex); // ['2024', '01'] (有 g 返回匹配陣列)
str.match(/\d+/); // ['2024', index: 3, input: ..., groups: undefined] (無 g 返回詳情)

// 4. replace() - 替換
str.replace(/\d+/g, '***'); // '年 *** 月 *** 日'
str.replace(/(\d{4})-(\d{2})/, '$2/$1'); // 分組引用

// 5. split() - 分割
'1,2;3'.split(/[,;]/); // ['1','2','3']

// 6. matchAll() (ES2020) - 迭代器獲取所有分組
[...str.matchAll(/(\d{4})-(\d{2})/g)];

實用模式庫 (可直接複製)


// 手機號 (中國大陸)
/^1[3-9]\d{9}$/

// Email (簡易 RFC 5322)
/^[^\s@]+@[^\s@]+\.[^\s@]+$/

// URL (HTTP/HTTPS)
/^https?:\/\/[^\s/$.?#].[^\s]*$/i

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

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

// 中文字符
/[\u4e00-\u9fa5]+/

// HTML 標籤 (簡易)
/<[^>]+>/g

// 密碼強度 (8-16 位,含大小寫數字特殊符號)
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,16}$/

調試神器

regex101.com — 即時解釋、解釋步驟、單元測試、代碼生成 (JS/Python/Go/...)。

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