---
# System prepended metadata

title: 正則表達式筆記
tags: [通用語法]

---

###### tags: `通用語法`

# 正則表達式筆記

## 基本用法

> 正則表達式在很多程式語言或處理資料時都派得上用場，方便整理欄位資料，或用於欄位值輸入驗證...等等

- 實體字元，直接取得該字元：**2022**


- 只取得**Apple**與**apple**：**[Aa]pple**
- 只匹配**Lion**、**liop**：**[Ll]io[np]**
- 只匹配**abcdefgh**、**ABCDEFGH**、**0123456789**：**[a-h 0-9 A-H]**
:::success
-意義等同於中文的到 ( ex: a到h )
:::


- 匹配特殊符號使用**[]、**-**、**()**：**[\-\[\]\(\)]**
:::info
\可對特殊符號進行匹配
:::


- 愛後面排除你：**.*愛[^你]**
:::success
^後方表示要排除的字元
:::

## 快捷用法

- 匹配任何符號：**\w**


- 匹配任何數字：**\d**


- 匹配空白或換行：**\s**
:::warning
範例：code、code jiaonang、code jiaonang、code www、
code jiaonang：**[c-g]\s**
:::

- 將一個詞語單獨匹配，該詞語能於"<詞語>"、-<詞語>-之中：**\b**
:::success
範例：code、code jiaonang、www.code、code-jiaonang：**\bcode\b**
:::

- 以什麼開始：**^**
:::warning
範例：以JS詞語開始：**^JS**
:::

- 以什麼結束：**$**
:::success
範例：以CSS詞語結束：**CSS$**
:::

- 表示任意字符：**.**
:::danger
範例：ear、parked、barked：**.ar**
注意：在[]不得使用
:::

- ?左右字元皆可被匹配：**<字元>?<字元>**
:::success
範例：favorite、favourite、favorite、favourite：**favou?rite**
:::


## 多個字元匹配用法

- 定義字元出現次數：**{次數數值}**
:::warning
範例1：0254、0211、0512：**\d{4}**
範例2：222-88888、021-45678：**\d{3}\-\d{5}**
:::

- 定義出現次數的區間：**{多少,(到)多少}**
:::success
範例：025-1452685、014-58963241、0799-1111111、0011-8475962：**\d{3,4}\-\d{7,8}**
:::
:::danger
注意：,後面不能空白 ( coding的好習慣在此不適用 :P )
:::

- 匹配1~多個字元：**+**、**{1,}**


- 匹配0~多個字元：*****、**{0,}**


## 實作練習

**1.**
> 匹配==18111234589==、==18711001111==、==13713201111==、==13712345678==、==14712345897==、==15721565489==。[color=#7BD4ED]
:::warning
解答：^1[3-8]\d{9}
:::


**2.**
> 匹配==https://code.com/==、==http://google.com/==、==https://codejn/==、==https://google.com/==。[color=#7BD4ED]
:::warning
解答：https?://
:::


**3.**
> 匹配以zo結尾的所有詞語。[color=#7BD4ED]
:::warning
解答：zo$
:::


**4.**
> 匹配==王敏 0001==、==王磊 1234==、==王芳芳 0503==但是不能匹配**王芳 04**。[color=#7BD4ED]
:::warning
解答：^王...{3}
:::

**5.**
> (1) 格式要這樣：2023-03-05
> 
> (2) 月份僅3月和4月
> 
> (3) 年份只要2023年
> 
> (4) 日不超過30 [color=#7BD4ED]
> 
:::warning
解答：^2023-(0[3-4])-([0-2][1-9]|30)$
:::

**6.**
> 只允許輸入中文 [color=#7BD4ED]
:::warning
```javascript=
function isChinese(str) {
    return /^[\u4e00-\u9fa5]+$/.test(str);
}
```
:::
