第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在JavaScript正則表達(dá)式中訪問(wèn)匹配的組?

如何在JavaScript正則表達(dá)式中訪問(wèn)匹配的組?

如何在JavaScript正則表達(dá)式中訪問(wèn)匹配的組?我想使用正則表達(dá)式匹配字符串的一部分,然后訪問(wèn)該帶括號(hào)的子字符串:var myString = "something format_abc"; // I want "abc"var arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString);console.log(arr);     // Prints: [" format_abc", "abc"] .. so far so good.console.log(arr[1]);  // Prints: undefined  (???)console.log(arr[0]);  // Prints: format_undefined (!!!)我究竟做錯(cuò)了什么?我發(fā)現(xiàn)上面的正則表達(dá)式代碼沒(méi)有任何問(wèn)題:我測(cè)試的實(shí)際字符串是這樣的:"date format_%A"報(bào)告“%A”未定義似乎是一種非常奇怪的行為,但它與此問(wèn)題沒(méi)有直接關(guān)系,所以我開(kāi)了一個(gè)新的,為什么匹配的子字符串在JavaScript中返回“undefined”?。問(wèn)題是console.log它的參數(shù)就像一個(gè)printf語(yǔ)句,因?yàn)槲艺谟涗浀淖址?quot;%A")有一個(gè)特殊的值,它試圖找到下一個(gè)參數(shù)的值。
查看完整描述

3 回答

?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊

您可以像這樣訪問(wèn)捕獲組:


var myString = "something format_abc";

var myRegexp = /(?:^|\s)format_(.*?)(?:\s|$)/g;

var match = myRegexp.exec(myString);

console.log(match[1]); // abc

如果有多個(gè)匹配,您可以迭代它們:


var myString = "something format_abc";

var myRegexp = /(?:^|\s)format_(.*?)(?:\s|$)/g;

match = myRegexp.exec(myString);

while (match != null) {

  // matched text: match[0]

  // match start: match.index

  // capturing group n: match[n]

  console.log(match[0])

  match = myRegexp.exec(myString);

}


查看完整回答
反對(duì) 回復(fù) 2019-05-23
?
至尊寶的傳說(shuō)

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊

這是一種方法,您可以使用它來(lái)獲得每個(gè)匹配的第n個(gè)捕獲組:


function getMatches(string, regex, index) {

  index || (index = 1); // default to the first capturing group

  var matches = [];

  var match;

  while (match = regex.exec(string)) {

    matches.push(match[index]);

  }

  return matches;

}



// Example :

var myString = 'something format_abc something format_def something format_ghi';

var myRegEx = /(?:^|\s)format_(.*?)(?:\s|$)/g;


// Get an array containing the first capturing group for every match

var matches = getMatches(myString, myRegEx, 1);


// Log results

document.write(matches.length + ' matches found: ' + JSON.stringify(matches))

console.log(matches);


查看完整回答
反對(duì) 回復(fù) 2019-05-23
?
弒天下

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊

關(guān)于上面的多匹配括號(hào)示例,我在找不到我想要的內(nèi)容之后在這里尋找答案:


var matches = mystring.match(/(?:neededToMatchButNotWantedInResult)(matchWanted)/igm);

在看了上面帶有while和.push()的稍微復(fù)雜的函數(shù)調(diào)用之后,我突然意識(shí)到問(wèn)題可以用mystring.replace()代替非常優(yōu)雅(替換不是重點(diǎn),甚至沒(méi)有完成,CLEAN,第二個(gè)參數(shù)的內(nèi)置遞歸函數(shù)調(diào)用選項(xiàng)是?。?/p>


var yourstring = 'something format_abc something format_def something format_ghi';


var matches = [];

yourstring.replace(/format_([^\s]+)/igm, function(m, p1){ matches.push(p1); } );

在此之后,我認(rèn)為我不會(huì)再使用.match()了。


查看完整回答
反對(duì) 回復(fù) 2019-05-23
  • 3 回答
  • 0 關(guān)注
  • 1030 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)