国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript的正則匹配方法學習

2019-11-20 10:31:27
字體:
來源:轉載
供稿:網友

javascript中正則匹配有3個方法,match,exec,test。這些方法都跟字符串和RegExp對象有關,但使用場景不一樣,容易混淆。match是字符串的一個方法,接收一個RegExp對象做為參數,其他的是RegExp對象的方法,接收一個字符串參數。

var str = 'abcdef12ab34cd56ef';var patt = new RegExp('ab'); //主意是非全局匹配var ret_test = patt.test(str);console.log(ret_test);var ret_match = str.match(patt);console.log(ret_match);var ret_exec = patt.exec(str);console.log(ret_exec);

1. regExp.test(string)

  該方法最簡單,在string中找到匹配regExp的字符串則返回true,沒找到匹配的字符串則返回false

2. regExp.exec(string)

  該方法稍微復雜些。

  當regExp沒有全局標志時,其返回值為字符串數組:數組的第0號元素為剛匹配到的字符串,如果regExp有子表達式,則數組第1號元素為regExp的第一個子表達式,第2號元素為regExp的第二個字表達式...以此類推。在上例中如果 patt = new RegExp('f(//d)(//d)','g');則 ret_exec 將為字符串數組:['f12','1','2']。

  當regExp有全局標志(g選項)時,返回值為第一個匹配到的字符串組成的數組,數組的第0號元素為剛匹配到的字符串,如果regExp有子表達式,則數組第1號元素為regExp的第一個子表達式,第2號元素為regExp的第二個字表達式...以此類推。同時主意,regExp對象的一個屬性(lastIndex)被改變了,lastIndex被設置為那個字符串最后一個字符所在的位置,其的后面的那個位置(在上例中是lastIndex = 2)。當再次調用 regExp.exec(string)時,搜索范圍將從regExp.lastIndex開始搜索。此時返回值仍然是單元素的字符串數組,lastIndex = 10 。我們經常用while循環來遍歷字符串中的匹配:

var patt = new RegExp('ab', 'g'),  str = 'abcdef12ab34cd56ef', ret;while((ret = patt.exec(str))!=null) {  console.log(ret);}//輸出['ab']['ab']

  exec方法返回的不是標準的數組,應該算是一個類數組,因為它還有2個屬性:input是輸入的字符串,index是當前匹配的字符串第一個字符在input中的位置。

3. string.match(regExp)

  該方法比exec簡單一些,因為它不用考慮regExp的lastIndex屬性。同樣,也需要分兩種情況(全局匹配與非全局匹配)

  當regExp沒有全局標志時,返回值與調用exec一樣,返回一個數組,數組的第0號元素為剛匹配到的字符串,如果regExp有子表達式,則數組第1號元素為regExp的第一個子表達式,第2號元素為regExp的第二個字表達式...以此類推。主意該數組同時還有2個屬性:input是輸入的字符串string,index是當前匹配的字符串第一個字符在input中的位置。

  當regExp有全局標志(g選項)時,很簡單,也符合我們的理解:返回所有匹配到的字符串組成的數組。這是標準數組,沒有input屬性,也沒有index屬性。返回值數組中除了匹配到的字符串沒有任何其他信息。

  從上面的分析看出,如果你只是想判斷字符串是否匹配某個正則表達式,就用test方法。如果想一次性取出所有匹配到的字符串,或者只找到第一個匹配的字符串就可以,就用match方法。如果你想多次匹配,而且需要知道每個匹配到的字符串在原始字符串中的位置,或者正則表達式中還有子表達式信息需要關注,就用exec方法。

以上就是javascript正則匹配的多種方法介紹,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太保市| 石城县| 大港区| 无棣县| 冕宁县| 盐池县| 南宫市| 会理县| 乐至县| 繁峙县| 手机| 肥东县| 襄汾县| 滦南县| 丹凤县| 桐柏县| 马龙县| 耿马| 兴文县| 阿拉善右旗| 黄龙县| 木兰县| 庆阳市| 浦北县| 辽宁省| 开封县| 昌宁县| 仲巴县| 新营市| 沙湾县| 正定县| 瑞丽市| 沧州市| 乌鲁木齐县| 女性| 武强县| 固安县| 二连浩特市| 互助| 长乐市| 调兵山市|