日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS中与正则相关的方法

發布時間:2023/12/2 javascript 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS中与正则相关的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前面有一篇文章大體介紹了一下JS中正則表達式,而使用正則表達式還需要配合JS中的相關方法,分別是String對象和RegExp對象的方法。今天就來具體介紹一下這些方法。

使用這則表達式的方法可以分為兩類,一個是String的幾個方法,還有一個就是RegExp對象自身的方法,分別有:

RegExp的方法有 exec test

String的方法有 match replace search split

這些方法中最復雜的就是exec這個方法,表面上和String的match方法很像但是不然。

正則的exec()與字符串的match()

當這個方發作用于非全局匹配的正則表達式的時候和String的match方法作用是一樣的,會返回一個數組數組的第一個元素是正則表達式的匹配結果,第二個元素是正則表達式第一個子表達式(分組,用小括號括起來的表達式)的匹配結果,以此類推。結果數組還有index屬性,input屬性和groups屬性,其中index表示的是匹配到的字符串第一個字符的index,input是執行匹配的字符串。以上這些屬性和String.match方法返回的都一樣。當匹配不到結果的時候兩個方法返回的都是null。

var a = /a(\w)/; var str = "cbacbab";str.match(a); // ["ac", "c", index: 2, input: "cbacbab", groups: undefined]a.exec(str); // ["ac", "c", index: 2, input: "cbacbab", groups: undefined]

當匹配全局正則表達式的時候這兩個方法的表現則完全不同,match方法會一次返回所有的匹配結果并且不會有其它額外的信息,而exec則不同一次只會返回一個匹配的結果,但是結果中還會包含以上的信息。

exec在執行全局匹配的時候回從lastIndex開始匹配,匹配后會設置Regexp對象的lastIndex屬性為匹配到的字符最后一個字符的下一個位置,當匹配不到結果的時候就會重置lastIdex屬性值為0。

所以match在匹配全局正則表達式和非全局正則表達式的行為表現是不一樣的(JS中這樣的例子有很多,例如Array() 參數個數不一樣導致的結果也不一樣)。

var a = /a(\w)/g; var str = "cbacbab";str.match(a); // ["ac", "ab"]a.exec(str); // ["ac", "c", index: 2, input: "cbacbab", groups: undefined],看第二個元素 'c' 這就是(\w)子表達式捕獲的字符串a.lastIndex; // 4a.exec(str); // ["ab", "b", index: 5, input: "cbacbab", groups: undefined]a.lastIndex; // 7 匹配結果后面沒有了所以重置為0a.exec(str); // nulla.lastIndex; // 0

test()方法

reg.exec(b)返回一個boolean值表示在b中能否匹配到reg(正則表達式),與正則的exec方法一樣當正則為全局匹配的時候會根據屬性lastIndex來匹配,返回信息。

var reg = /a/;var a = 'edcba';var c = 'ddd';reg.test(a); // truereg.test(c); // false// 全局匹配的正則var regG = /a/g;var str = 'abcdabcd';regG.test(str); // trueregG.lastIndex; // 1regG.test(str); // true 這是從字符串位置1開始匹配的結果,并不是從新從字符串位置0開始匹配regG.lastIndex; // 5retG.test(str); // falseregG.lastIndex; // 0 沒有匹配的結果就重置了lastIndex為0

replace()方法

這個方法可以捕獲分組,但是JS中的正則表達式并不能給分組命名,所以只能用分組的序號來捕獲分組。

var a = 'abcdefg';var reg = /c(de)/;a.replace(reg, '$1hhh'); // 這個$1就是捕獲了分組 (de) 所以結果是 abdehhhfg

search()方法

在字符串a中搜尋字符串b,字符串b也可以是一個描述字符串的正則表達式。返回的是字符串b在a中的起始位置,如果搜索不到那么就會返回-1,和在數組中使用indexOf查找元素一樣找不到會返回-1。

var a = 'abcd';var reg = /b/;a.search(reg); // 1a.search('e'); // -1

split()方法

a.split(b) 根據b分割a,返回一個數組。b可以是一個字符串也可以是一個描述字符串的正則表達式。

var a = 'ab cd ef';a.split(' '); // ["ab", "cd", "ef"]a.split(/\s+/); // ["ab", "cd", "ef"]

總結

以上是生活随笔為你收集整理的JS中与正则相关的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。