"unescape('awefawef')unescape('efawefwf')unescape('awefawef')"
.match(/unescape\(\'([^\)]+)\'\)/gi)
如果有多个unescape(...)
匹配,则返回与unescape
的匹配,但我只需要()
括号内的内容。
谢谢;)
期望的输出:
['awefawef','efawefwf','awefawef']
答案 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]);
}
编辑:修正原始答案