从正文表达式的文本中获取字符串

时间:2012-08-03 09:45:53

标签: javascript regex

如何只获取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]);

3 个答案:

答案 0 :(得分:2)

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

? *之后让它变得懒惰,所以。事后并没有抓住一切。

答案 1 :(得分: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];

答案 2 :(得分:0)

您的.*表达式是贪婪的,因此会进入收尾],而不是将匹配到

除了@Telémako的解决方案之外,另一种方法是通过说“匹配除]之外的任何内容来使表达更严格。这也将解决问题。”

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