1. 程式人生 > >js正則表示式擷取兩個字串中間的字串

js正則表示式擷取兩個字串中間的字串

一個最常用的場景 擷取兩個字串中間的字串

  var str = "iid0000ffr";
    var substr2 = str.match(/id(\S*)ff/);
    alert(substr2);

你會發現逗號後面是你要的東西

/S*表示多個字串

為什麼想要的東西在逗號後,也就是陣列第二個.

是因為match的返回陣列,第一個表示匹配的字串,這裡是包括id ff的,結果是id0000ff

第二個是子正則表示式,什麼是子正則表示式,()裡面的內容就是子正則表示式,就是指\s*,這才是我們要的東西

 

我們還可以寫複雜點,

var str2='erwab999999d789eeff';

 var substr = str2.match(/ab\S*d(\S*)ff/);

這個表示以ab開始d結尾的字串 同ff字串之間的字串,輸出:["ab999999d789eeff", "789ee"]

注意輸出的為陣列,若要輸出“789ee”,即substr[1]。

其實,在高階語言裡,我們會用一個叫數量詞的概念

就是

(?=abc)這表示以abc結尾的前面的字串,但不包括abc

  var str = "iid0000ffr";
    var substr2 = str.match(/(\S*)(?=ff)/);
    alert(substr2);

但你不能直接寫

   var substr = str.match(/(?=ff)/); 

因為它只管邏輯,但不會輸出.

這種東西叫正向肯定預查,就是查***前面的字串,

很多高階語言裡面還有叫"反向肯定預查",就是叫***後面的字串,一般是這樣寫

?<=abc 不過可憐js不支援