---
# System prepended metadata

title: JS正規化
tags: [PID]

---

# JS正規化
###### tags: `PID`
僅收錄常用規則, \b以及(?=), (?:)請自行查找

## 格式
```javascript=
/[規則]/
```

## 規則總類（基礎）
### /a/
輸入的字串裡需要滿足有一個a
```javascript=
/a/.test('a')  //true
/a/.test('aa')  //true
/a/.test('b')  //false
```

### /^a/
字串開頭必須為a
```javascript=
/a/.test('a')  //true
/a/.test('ab')  //true
/a/.test('ba')  //false
```

### /a$/
字串結尾必須為a
```javascript=
/a/.test('a')  //true
/a/.test('ab')  //false
/a/.test('ba')  //true
```

### /[abc]/
字串中需要包含一個a或b或c (這邊的或會和後面的或有所不同, 這邊指的是字元)
```javascript=
/[abc]/.test('a') //true
/[abc]/.test('abc') //true
/[abc]/.test('ad') //true
/[abc]/.test('d') //false
```

### /[a-z]/
字串中需要包含一個a~z其中一個

### /[^a]/
不包含a, 這邊會有很大的問題, 如果只是單單打/[^a]/, 大部分都會通過
```javascript=
/[^a]/.test('a') //false
/[^a]/.test('ac') //true
/[^a]/.test('da') //true
/[^a]/.test('d') //true
```
因為正規化是只要有一個字元符合, 整個字串就是符合, 如果要整個字串都不能有a
```javascript=
/^[^a]+$/.test('a') //false
/^[^a]+$/.test('ac') //false
/^[^a]+$/.test('da') //false
/^[^a]+$/.test('d') //true
```
這個規則表示, 整個字串中, 可以包含至少一個不含a的字元, +後面會再敘述

### /a{1,2}/
整個字串中需要包含1~2個連在一起的a
```javascript=
/a{1,2}/.test('a') //true
/a{1,2}/.test('aa') //true
/a{1,2}/.test('aaa') //true
/a{1,2}/.test('b') //false
```

### /a{2}/
整個字串需要包含兩個連在一起的a
```javascript=
/a{2}/.test('a') //false
/a{2}/.test('aa') //true
/a{2}/.test('aba') //false
```

### /\ // (這裡不會有一個空格, 只是配合md格式)
整個字串需要包含一個/符號, 特殊符號前面需要加上反斜線
```javascript=
/\//.test('>//<') //true
```

### /(jpg|svg|png|swf)/
表示字串中需要有這四個字串中的其中一個 (這裡的或指的是字串)
```javascript=
/(jpg|svg|png|swf)/.test('jpg') //true
/(jpg|svg|png|swf)/.test('jpn') //false
/(jpg|svg|png|swf)/.test('qcewjpgcdw') //true
```

## 規則總類（簡寫）
### /a*/
與/a{0,}/等價, 需要0個以上的a
```javascript=
/a*/.test('a') //true
/a*/.test('b') //true
/a*/.test('aa') //true
```

### /a+/
與/a{1,}/等價, 需要1個以上的a
```javascript=
/a*/.test('a') //true
/a*/.test('b') //false
/a*/.test('aa') //true
```

### /a?/
與/a{0,1}/等價, 需要0個或1個a, 但是跟前面一樣, 如果是整個字串就需要加上限制
```javascript=
/a?/.test('a') //true
/a?/.test('b') //true
/a?/.test('aa') //true
```

### /\d/
與/[0-9]/等價

### /\w/
與/[A-Za-z0-9_]/等價

### /\s/
與/[\t\r\n\v\f]/等價, 指的是所有空白字元

## 特別收錄
### 至少一個大寫
```javascript=
/^(?=.*[A-Z])\w+$/
```