在這本書中‘的JavaScript:好的部分’,它解釋瞭如下方法string.match(regexp)
:我不能準確地理解如何做JavaScript的方法string.match(正則表達式)「SG標誌工作
匹配方法匹配一個字符串和一個正則表達式。它如何 這取決於g標誌。如果沒有g標誌,則調用字符串.match(regexp)的結果與調用 regexp .exec(string)的結果相同。然而,如果正則表達式具有g標誌,那麼它 產生所有匹配的數組,但不包括捕獲 組:
然後書中提供的代碼示例:
var text = '<html><body bgcolor=linen><p>This is <b>bold<\/b>!<\/p><\/body><\/html>';
var tags = /[^<>]+|<(\/?)([A-Za-z]+)([^<>]*)>/g;
var a, i;
a = text.match(tags);
for (i = 0; i < a.length; i += 1) {
document.writeln(('// [' + i + '] ' + a[i]).entityify());
}
// The result is
// [0] <html>
// [1] <body bgcolor=linen>
// [2] <p>
// [3] This is
// [4] <b>
// [5] bold
// [6] </b>
// [7] !
// [8] </p>
// [9] </body>
// [10] </html>
我的問題是我無法理解「但排除捕獲組」。
在上面的代碼示例中,</html>
中的html
位於捕獲組中。爲什麼它仍然包含在結果數組中?
而且/
在</html>
中也在捕獲組中。爲什麼它包含在結果數組中?
你能解釋一下「但不包括捕獲組」嗎?
非常感謝!
非常感謝!你的回答是正確的,詳細和有益的! – weilou
@ WeiLou::-)謝謝!很高興這有幫助。最好, –