javascript获取两组字符之间的子字符串

时间:2022-05-17 17:07:45

I have the following string:

我有以下字符串:

var myString = '<p><i class="someclass"></i><img scr="somesource"/><img class="somefunnyclass" id="{{appName}}someExtraStuff.fileExt"/><span class="someclass"></span></p>';

how can i get with the least code the someExtraStuff.fileExt section?

我如何用最少的代码获得someExtraStuff.fileExt部分?

should i do indexOf {{appName}} and then until the next "/> ?

我应该做indexOf {{appName}}然后直到下一个“/>?

2 个解决方案

#1


2  

You could search for the pattern {{appName}} and take all characters who are not quotes. Then take the second element of the match.

您可以搜索模式{{appName}}并获取所有不是引号的字符。然后拿下比赛的第二个元素。

var string = '<p><i class="someclass"></i><img scr="somesource"/><img class="somefunnyclass" id="{{appName}}someExtraStuff.fileExt"/><span class="someclass"></span></p>',
    substring = (string.match(/\{\{appName\}\}([^"]+)/) || [])[1]

console.log(substring);

#2


2  

You can do this with three methods

您可以使用三种方法完成此操作

// 1 option For single match

// 1选项用于单场比赛

var regex = /\{\{appName\}\}([^"]+)/;
var myString = '<p class="somefunnyclass" id="{{appName}}someExtraStuff.fileExt"/>';
console.log(myString.match(regex)[1]);

// 2 option For multiple matches

// 2选项用于多个匹配

var regex = /\{\{appName\}\}([^"]+)/g;
var myString = '<p class="somefunnyclass" id="{{appName}}someExtraStuff.fileExt"/>';
var temp;
var resultArray = [];
while ((temp = regex.exec(myString)) != null) {
    resultArray.push(temp[1]);
}
console.log(resultArray);

// 3 option For indexOf

// 3选项对于indexOf

var firstIndex= myString.indexOf("{{appName}}");
var lastIndex =firstIndex+ myString.substring(firstIndex).indexOf('"/>')
var finalString = myString.substring(firstIndex,lastIndex).replace("{{appName}}","");
console.log(finalString);

#1


2  

You could search for the pattern {{appName}} and take all characters who are not quotes. Then take the second element of the match.

您可以搜索模式{{appName}}并获取所有不是引号的字符。然后拿下比赛的第二个元素。

var string = '<p><i class="someclass"></i><img scr="somesource"/><img class="somefunnyclass" id="{{appName}}someExtraStuff.fileExt"/><span class="someclass"></span></p>',
    substring = (string.match(/\{\{appName\}\}([^"]+)/) || [])[1]

console.log(substring);

#2


2  

You can do this with three methods

您可以使用三种方法完成此操作

// 1 option For single match

// 1选项用于单场比赛

var regex = /\{\{appName\}\}([^"]+)/;
var myString = '<p class="somefunnyclass" id="{{appName}}someExtraStuff.fileExt"/>';
console.log(myString.match(regex)[1]);

// 2 option For multiple matches

// 2选项用于多个匹配

var regex = /\{\{appName\}\}([^"]+)/g;
var myString = '<p class="somefunnyclass" id="{{appName}}someExtraStuff.fileExt"/>';
var temp;
var resultArray = [];
while ((temp = regex.exec(myString)) != null) {
    resultArray.push(temp[1]);
}
console.log(resultArray);

// 3 option For indexOf

// 3选项对于indexOf

var firstIndex= myString.indexOf("{{appName}}");
var lastIndex =firstIndex+ myString.substring(firstIndex).indexOf('"/>')
var finalString = myString.substring(firstIndex,lastIndex).replace("{{appName}}","");
console.log(finalString);