- 正則:就是用來操作字符串(匹配和捕獲)的一系列規(guī)則晴氨;
- 匹配:校驗(yàn)字符串是否符合我們的規(guī)則烦绳; 返回值-》布爾值 true false赏陵;
- 匹配這里用的正則方法:test() reg.test();
- 捕獲:把復(fù)合我們規(guī)則的內(nèi)容拎出來送火; 返回值-》復(fù)合規(guī)則的字符串联贩;
正則有兩種創(chuàng)建方式:
1.字面量創(chuàng)建方式
2.實(shí)例創(chuàng)建方式
字面量和實(shí)例創(chuàng)建的區(qū)別:
1.字面量創(chuàng)建不能進(jìn)行變量拼接烈钞,但是泊碑,實(shí)例創(chuàng)建可以進(jìn)行變量拼接;
2.字面量創(chuàng)建方式毯欣,特殊含義的字符不需要轉(zhuǎn)移馒过,但是,實(shí)例創(chuàng)建需要轉(zhuǎn)義(帶\的)酗钞;
正則由兩部分組成:元字符+修飾符腹忽;
元字符包含:
- 代表特殊含義的元字符
\ 轉(zhuǎn)義
| 或
() 分組
. 代表除了\n以外的其他字符;
\n 換行
\b 開頭結(jié)尾和空格
^ 開頭
$ 結(jié)尾
\s 空格 \d數(shù)字 \w 數(shù)字字母下劃線
\S 非空格 \D非數(shù)字 \W 非數(shù)字字母下劃線
[a-z] 字母 [^a-z]非字母
[abc]abc三個字母中的任何一個 [^abc]除了這三個字母中的任何一個字符 - 代表次數(shù)的量詞元字符砚作;
* 0到多
+ 1到多
? 0次或1次 可有可無的意思
{n} 正好n次窘奏;
{n,} n到多次
{n,m} n次到m次 - 修飾符 g 全局 i 忽略大小寫 m換行;
中括號總結(jié):
1)中括號中的字符沒有特殊含義葫录;(但是像\w還是有特殊含義的)
2)中括號中着裹,不會出現(xiàn)兩位數(shù);
關(guān)于小括號:
1)提高優(yōu)先級:凡是有|出現(xiàn)的時候米同,外面一定要加上()來提高優(yōu)先級骇扇; /^(18|19)$/
2)分組
3)只匹配不捕獲 (?:)
正則的捕獲:
- exec:exec拿到的是個數(shù)組,一般情況下這個數(shù)組有三項(xiàng):
1.符合大正則的內(nèi)容
2.找到內(nèi)容的索引
3.原始字符串面粮; - match:
- replace:
replace的參數(shù)少孝,拿到的是個數(shù)組:數(shù)組中一般情況下有三項(xiàng):
1.符合大正則的內(nèi)容
2.找到的內(nèi)容對應(yīng)的索引
3.原始字符串;
如果說熬苍,正則中有小分組的時候稍走,小分組從數(shù)組的第二項(xiàng)開始;
正則捕獲的特性:
- 懶惰性:
解決措施:全局g; - 貪婪性:
解決措施:在兩次元字符后面加上?號柴底;
正則的屬性:
lastIndex:代表開始查找位置的索引婿脸;lastIndex是正則對象的一個屬性:作用-》打印出開始查找的位置;(從找到內(nèi)容的下一項(xiàng)內(nèi)容的索引開始查找似枕;)
lastIndex主要受兩方面的影響:1)exec 2)test盖淡;
問號的用法:
- ? 量詞元字符凿歼,代表可有可無
- +褪迟? 解決正則的貪婪性冗恨;
- (?:) 只匹配不捕獲;
exec和match區(qū)別:
- 在全局g的情況下味赃,每次只能拿到一個數(shù)組掀抹,但是,exec可以把符合正則內(nèi)容字符串進(jìn)行小分組的摘刃乃住傲武;
- 在全局g的情況下,match能拿到符合正則內(nèi)容的字符串的數(shù)組城榛;但他沒有小分組
正則的方法:
- reg.test() 校驗(yàn)-匹配的揪利,返回的是布爾值
- reg.exec() 捕獲-返回值數(shù)組,默認(rèn)情況下狠持,數(shù)組有三項(xiàng)疟位,當(dāng)有小分組的時候,小分組從第二項(xiàng)開始
- reg.lastIndex; 開始查找內(nèi)容的位置的索引喘垂;
2.字符串方法: - match(); 把找到的符合正則的內(nèi)容甜刻,以一個新數(shù)組的形式返回
- replace(); 可以通過arguments,拿到大正則和小分組正勒,arguments的實(shí)現(xiàn)原理就是exec得院;
- split(reg);
- search(reg);
鏈?zhǔn)讲僮鳎汉诵木褪乔耙粋€方法的返回值,返回的是個數(shù)組章贞,就能使用數(shù)組的方法祥绞,返回的是個數(shù)字,只能使用數(shù)字的方法 - exec 可以封裝match阱驾; 也是replace的實(shí)現(xiàn)原理就谜;(replace中的arguments跟exec拿到的值是一模一樣的)