Javascript匹配:仅返回子模式匹配的内容

时间:2011-08-04 16:24:46

标签: javascript

"unescape('awefawef')unescape('efawefwf')unescape('awefawef')"
.match(/unescape\(\'([^\)]+)\'\)/gi)

如果有多个unescape(...)匹配,则返回与unescape的匹配,但我只需要()括号内的内容。

谢谢;)

期望的输出:

['awefawef','efawefwf','awefawef']

3 个答案:

答案 0 :(得分:4)

您需要使用ungreedy运算符仅匹配括号内容,并获得所有结果,您需要在同一个字符串上多次调用RegExp.exec。

var regex = /unescape\('(.+?)'\)/ig;
var string = "this unescape('foo') is a unescape('bar') test";
var result;
while(result = regex.exec(string))
    console.log(result[1]);

答案 1 :(得分:2)

您可以从RegExp.$1获取。

"unescape('awefawef')unescape('efawefwf')unescape('awefawef')".match(/unescape\(\'([^\)]+)\'\)/gi);
console.log(RegExp.$1); //awefawef

答案 2 :(得分:1)

如果要使用捕获,可以使用Regex.exec()。使用你的案例:

var str = "unescape('foo')unescape('bar')unescape('baz')";
var regex = /unescape\(\'([^']+)\'\)/g;

var result;
while( result = regex.exec(str) ){
    alert(result[1]);
}

编辑:修正原始答案