正则表达式 - 在第二次出现的字符

时间:2018-03-13 14:05:27

标签: javascript regex

我有一串看起来像这样的文字:

?q=search&something=that&this=example/

在该示例中,我需要抓住that。我正在使用以下正则表达式:

var re = new RegExp("\&(.*?)\&");

哪位前往re[1]给了我:

something=that - 但它必须只有that

我试过了:

var re = new RegExp("\=(.*?)\&");

但是这给了我第一个等号的一切,所以:

search&something=that

输出是否只需要:

that

我需要以某种方式定位第二次出现的2个字符并抓住它们之间的什么。我最好怎么做?

2 个答案:

答案 0 :(得分:1)

split似乎更适合您的情况:

"?q=search&something=that&this=example/".split("&")[1].split("=")[1]

然后你也可以实现一个简单的方法来提取任何想要的值:

function getValue(query, index) {
   const obj = query.split("&")[index];
   if(obj) obj.split("=")[1]
}

getValue("?q=search&something=that&this=example/", 1);

答案 1 :(得分:1)

您可以使用

/something=([^&]+)/

并选择第一组,请参阅JavaScript示例:



let url = '?q=search&something=that&this=example/';
let regex = /something=([^&]+)/
let match = regex.exec(url);
console.log(match[1]);