一、常用法
1、替換文本,可以在文檔中使用一個(gè)正則表達(dá)式來標(biāo)識(shí)特定文字,然后可以全部將其刪除,或者替換為別的文字 。例如屏蔽一些罵人的特定文字等。
2、校驗(yàn)數(shù)據(jù)合法有效性,例如輸入用戶名、密碼、電話號(hào)碼等數(shù)據(jù)時(shí),對(duì)其檢測(cè),看是否符合輸入要求。
3、基于模式匹配從字符串中提取子字符串。
二、工作原理
通配符技術(shù)——計(jì)算機(jī)查找文件時(shí)常用。
三、js中的正則寫法
1、js內(nèi)置對(duì)象
var reg = new RegExp("a","i"); //RegExp-js內(nèi)置對(duì)象;參數(shù)1-正則內(nèi)容,具體規(guī)則;參數(shù)2-標(biāo)志
2、直接量
var re = /a/i; //正則表達(dá)式的直接量
四、特殊符號(hào)
1、特殊符號(hào)包括:
! $ ^ * + = | . ? \ / ( ) [ ] { }
2、一些有特殊含義的字符。需要匹配特殊符號(hào),需要用反斜杠(\)進(jìn)行轉(zhuǎn)譯。
var re = /*/i; //匹配所有字符
var re = /\*/i; //對(duì)(*)進(jìn)行了轉(zhuǎn)譯,匹配(*)
五、字符類
1、匹配一類字符。
2、內(nèi)容:
\w ——ASCII單字符 [a-zA-Z0-9_]
\W ——ASCII單字符以外的字符
\s ——Unicode空白符,即空格
\S ——Unicode空白符之外的字符
\d ——數(shù)字 [0-9]
\D ——數(shù)字以外的字符
[...] ——匹配方括號(hào)中的所有字符
[^...] ——匹配非方括號(hào)中的所有字符
六、重復(fù)類
{n} ——匹配前一項(xiàng)n次(連續(xù))
{n,} ——匹配前一項(xiàng)至少n次,至多不限
{n,m} ——匹配前前一項(xiàng)至少n次,至多m次
+ ——匹配前一項(xiàng)一次或多次(至少一次),等價(jià)于{1,},例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。
? ——匹配前一項(xiàng)0次或1次,等價(jià)于{0,1},例如,"do(es)?" 可以匹配 "do" 、 "does" 中的 "does" 、 "doxy" 中的 "do" 。
* ——匹配前一項(xiàng)0次或多次,等價(jià)于{0,},例如,zo* 能匹配 "z" 以及 "zoo"。
七、選擇符
| ——兩項(xiàng)之間的選擇,例如,a|b,匹配 a 或 b 字符。
八、定位符
^ ——匹配字符串的開頭。例如,^a,a要出現(xiàn)在字符串的開頭。
$ ——匹配字符串的結(jié)尾。例如,a$,a要出現(xiàn)在字符串的結(jié)尾。
\b ——匹配一個(gè)單詞的邊界。
\B ——匹配一個(gè)非單詞的邊界。
九、分組
(...) ——將幾個(gè)項(xiàng)目組合成一個(gè)單元。
(?...) ——不記憶與該組所匹配的內(nèi)容。
十、標(biāo)志
i ——不區(qū)分大小寫。
g ——全局匹配,即所有字符串,而非在發(fā)現(xiàn)第一個(gè)匹配項(xiàng)時(shí)立即停止。
m ——多行匹配。
十一、正則表達(dá)式對(duì)象的方法
1、reg.exec(str)執(zhí)行匹配,返回一個(gè)數(shù)組。
2、reg.test(str)測(cè)試匹配,返回一個(gè)布爾值(常用)。
十二、unicode編碼常用區(qū)間
\u4e00-\u9fa5中文。
\x00-\xff單字節(jié),即[^\x00-\xff]為雙字節(jié),js不區(qū)分單字節(jié)和雙字節(jié),str.length把所有字節(jié)識(shí)別為單字節(jié)。所以判斷字符串長(zhǎng)度時(shí)要先把雙字節(jié)替換成兩個(gè)字節(jié)后再取長(zhǎng)度做判斷:return str.replace(/[^\x00-\xff]/g,'xx').length。