---
# System prepended metadata

title: JavaScript 正規表達式 Regex
tags: [Angular, JavaScript]

---

### 怎麼寫？

可以用兩個 / 夾住條件：(效能較佳)
```
const rules = /[a-z]/
```
也可以新增一個 RegExp 物件：
```
var rules = new RegExp('[0-9]')
```

### 驗證字元
```
/./：任意字元。符合範例：「emma@」
/a./：字串含 a，以及其後面任一字元。不符合範例：「fa」
\D：非數字
\w：數字字母與底線，等同 [A-Za-z0–9_]
\W：非數字字母與底線，等同 [^A-Za-z0–9_]
\s：空白字元
\S：非空白字元
/^em/：開頭是 em
/ma$/：結尾是 ma
/^emma$/：是否有 emma
/^em|ma$/：開頭是 em，結尾是 ma
/[abc]/：包含 a 或 b 或 c
/[^abc]/：不包含 a 或 b 或 c
/^a{1,}$/：a 最少出現 1 次
*：0次以上
+：1次以上
?：0次或1次
```

### 由例子來解說

```
/(?=.*[a-z])/
```
括弧是一個 group，x(?=y) 的意思是有 x 且後面接 y 
?=：沒有設定在誰後面，但後面一定要接符合條件的字元，可以當作一定要有的意思
.*[a-z]：出現 0 次以上的任何字元(但必須是小寫英文)。

```
/^[a-zA-Z\d]{8,}$/
```
大小寫英文字，數字，符合至少 8 次

```
/^(?=.*[@$!%*?&])[@$!%*?&]$/
```
必須包含 @$!%*?& 這些特殊符號的意思

### 常見例子

Email：
```
/^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
```
手機號碼：
```
/^09\d{8}$/
```
身分證字號：
```
/^[A-Z]{1}[1-2]{1}[0-9]{8}$/
```

### 線上測試工具
[regexr](https://regexr.com/)