javascript的正則匹配方法學習_javascript技巧

來源:互聯網
上載者:User

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屬性。傳回值數組中除了匹配到的字串沒有任何其他資訊。

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.