如何使我的限制匹配贪婪?

时间:2016-08-01 21:16:15

标签: javascript regex

以下代码仅匹配MN。如何使其与KDMN匹配?

var str = ' New York Stock Exchange (NYSE) under the symbol "KDMN."';
var patt = new RegExp("symbol.+([A-Z]{2,5})");
var res = patt.exec(str);
console.log(res[1]);

1 个答案:

答案 0 :(得分:2)

您可以使用惰性+?量词:

/symbol.+?([A-Z]{2,5})/
         ^

请参阅regex demo。如果你保持贪婪的.+,它将匹配尽可能多的字符,并且只留下下一个子模式的最小2个字符。

或者,我宁愿让这个更冗长:

/symbol\s+"([A-Z]{2,5})/

another regex demosymbol匹配文字字符串symbol\s+将匹配1个或多个空格,"将匹配双引号,([A-Z]{2,5})将匹配2到5将大写ASCII字母转换为第1组。