0

我怎样才能只得到里面的文字Material[amhere]

例如,从...

PROD_RULE0001:WARNING: Metric[amhere] exceeded the UPPER WARNING limit[80.0]

...我只想要amhere.

我试过了:

var strg = "WARNING: Material[amhere] exceeded the UPPER WARNING limit[80.0]";
var testRE = strg.match("Material\[(.*)\]");
alert(testRE[1]);
4

3 回答 3

2
strg.match(/Material\[(.*?)\]/);

这 ?在 * 之后使它变得懒惰,所以 . 之后不会捕获所有内容。

于 2012-08-03T09:55:11.517 回答
1

也许您想使用另一种方式;

var material="Material[";
var str="WARNING: Material[amhere] exceeded the UPPER WARNING limit[80.0]";
var n=str.indexOf(material);
var amhere=str.substring(n+material.length, str.length).split("]")[0];
于 2012-08-03T09:57:48.993 回答
0

你的.*表情是贪婪的,因此在结束时吃掉了它,]不是与之匹配。

除了@Telémako 的解决方案,另一种方法是通过说“匹配除].

strg.match(/Material\[([^\]*)\]]/);
于 2012-08-03T09:59:26.763 回答