1. 創(chuàng)建正則表達(dá)式
-
通過字面量的形式
const reg = /\w/g //匹配字母 -
通過構(gòu)造函數(shù)
const reg = new Reg('\w', 'g')
2. 選擇符 |
const reg = /abc|edc/g // 匹配字符串中的abc 或 edc
3. 原子組和原子表
-
原子組 () 正則會(huì)為原子組進(jìn)行編號使用/1、/2等使用
- 在原子組里使用:?表示該原子組不記錄進(jìn)組編號內(nèi),也就是說使用exec方法是獲取不到該原子組匹配的內(nèi)容
const reg = /(abcdefg)/ //匹配字符串a(chǎn)bcdefg原子組里可以使用選擇符 |
const reg = /(abc|edc )/
-
原子表 []
- 原子表里使用. + 等特殊字符不需要轉(zhuǎn)義,也意味著原子表里面無法使用.來匹配非空格字符
const reg = /[abcdefg]/ //匹配abcdefg里任意一字符 let str = "2022-(/)01-(/)01" //需要匹配的字符串 let reg = /^\d{4}[-\/]\d{2}[-\/]\d{2}$/g let reg2 = /^\d{4}([-\/])\d{2}\1\d{2}$/g //這里的\1指與上個(gè)原子組保持一致,相當(dāng)于前面的原子組里的是什么后面的就匹配什么
4. 轉(zhuǎn)義符 \
- 大多數(shù)符號都需要配合使用 \ 進(jìn)行轉(zhuǎn)義
const reg = /\d+\.\d+/ // 匹配浮點(diǎn)數(shù)
- 作為對象的參數(shù)時(shí),與使用兩個(gè)\
const reg = new RegExp("\\d+\\.\\d+") //匹配浮點(diǎn)數(shù)
5. 字符邊界^ $
^起始邊界 、$結(jié)束邊界
const reg = /^[a-z]{3,6}$/ // 匹配以字母a-z為開頭a-z為結(jié)尾中間為a-z的長度為3到6w
6. 元字符
- \d 匹配數(shù)字
- \D 匹配非數(shù)字
- \w 匹配字母、數(shù)字、下劃線
- \W 匹配非字母、數(shù)字、下劃線
- \s 匹配空格、換行等
- \S 匹配非空格、換行等
- . 匹配換行符之外的所有字符
7. 模式修飾符
g 全局匹配
s忽略換行符
i 不區(qū)分大小寫
-
m多行匹配
const reg = /^\s*#\d+\s+.+\s+#$/gm
8. 漢字與字符屬性
const reg1 = /\p{L}/gu //匹配字母
const reg2 = /\p{P}/gu //匹配標(biāo)點(diǎn)符號
const reg3 = /\p{sc=Han}/gu //匹配漢字
9. lastIndex屬性
-
正則匹配后的最新的匹配項(xiàng)
let reg = /\w/g; while ((res = reg.exec((hd)))) { console.log(res); }
10.區(qū)間匹配
[a-z]匹配a到z 之間的任意字母,加+為貪婪匹配
[A-Z]匹配A到Z之間的任意字母, 加+為貪婪匹配
[^abc] 匹配非abc的所有字符
11.匹配所有內(nèi)容
- /.+/gs 匹配所有內(nèi)容
- /[\s\S]/ 匹配所有內(nèi)容 [\d\D]與[\w\W]類似
12.重復(fù)匹配
- ?匹配一個(gè)或0個(gè)
- *匹配0個(gè)或多個(gè) (貪婪匹配)
- +匹配一個(gè)或多個(gè)
- {number, number} 匹配指定區(qū)間個(gè)數(shù)個(gè)
郵箱驗(yàn)證
let reg = /^[\w-]+@([\w-]+\.)+(com|org|cc|cn|net)$/i
// 12345678@qq.com