【JavaScript 學習--01】--正則表達式的正則前瞻(?=)和非捕獲性分組(?:)區別

  • (?=)會作爲匹配校驗,但不會出現在匹配結果字符串裏面
  • (?:)會作爲匹配校驗,並出現在匹配結果字符裏面,它跟(…)不同的地方在於,不作爲子匹配返回。
    E.g 1:
var data = 'windows NT 50';
console.log(data.match(/windows (?=\d+)/));  // ["windows "]
console.log(data.match(/windows (?:\d+)/));  // ["windows 98"]
console.log(data.match(/windows (\d+)/));    // ["windows NT", "50"]

E.g 2:

var patt = /Win(?:dows )?([^do]{2})\s?(\d+\.\d+)?/i;
for (var i = 0; i < textList.length; i++) {
    console.log("---------orginal text= "+textList[i]);
    console.log("%j", textList[i].match(patt));

}

Result:
———orginal text= Windows 95
%j Array [ “Windows 95”, “95”, undefined ]
———orginal text= Win98
%j Array [ “Win98”, “98”, undefined ]
———orginal text= Windows XP
%j Array [ “Windows XP”, “XP”, undefined ]
———orginal text= Windows NT 5.1
%j Array [ “Windows NT 5.1”, “NT”, “5.1” ]
———orginal text= Win 9x 4.90
%j Array [ “Win 9”, ” 9”, undefined ]

發佈了57 篇原創文章 · 獲贊 19 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章