JavaScript - 在自定义条件下选择特定单词和下一个特定字符之间的字符串

时间:2018-04-09 04:48:36

标签: javascript string

我在变量中有一个很长的CSS代码,我想找到最后一个匹配的条件。 我的代码是:

var str = 'body { background: #fff; } .customClass{ font-size: 12px; } .anotherClass { color: #292929 } body { color : #fff }';
var str2 = str.substring(str.lastIndexOf("body {") + 1, str.lastIndexOf("}"));
console.log(str2);

在这里,我缩短了str以便更好地理解。在我的情况下,它至少约100-200行。

现在我只想要最后一个body { anything here }子字符串。在上面的例子中。我想要body {color: #fff }而不是字符串中第一个或任何其他出现的body标签。我知道多个机身样式不是很好的代码,但是现在这个代码依赖于第三方插件。我怎样才能做到这一点?

Fiddle

3 个答案:

答案 0 :(得分:1)

你对substring

有点困惑几乎是对的

var str = 'body { background: #fff; } .customClass{ font-size: 12px; } .anotherClass { color: #292929 } body { color : #fff }';
var str2 = str.substring(str.lastIndexOf("body {"), str.lastIndexOf("}") + 1);
console.log(str2);

答案 1 :(得分:1)

试试这个:)

var str = 'body { background: #fff; } .customClass{ font-size: 12px; } .anotherClass { color: #292929 } body { color : #fff } body{cool}';
var regex = /body\s+\{([^}]+)/g;
var temp;
var resultArray = [];
while ((temp = regex.exec(str)) != null)  
{  
resultArray.push(temp[1]);
} 
console.log(resultArray);

答案 2 :(得分:0)

你只需要对str2进行一些小改动

var str2 = str.substring(str.lastIndexOf("body"));

这将导致str2为body {color: #fff },如果您只需要样式部分,也可以添加以下行。

var styleStr = str2.substring(str2.indexOf('{')+1, str2.indexOf('}'));

现在它会产生一个像color : #fff

这样的字符串