"unescape('awefawef')unescape('efawefwf')unescape('awefawef')"
.match(/unescape\(\'([^\)]+)\'\)/gi)
如果有多個unescape(...)
匹配則返回與unescape
的匹配,但我只需要()
括號內的內容。Javascript匹配:僅返回子模式匹配的內容
謝謝;)
所需輸出:
['awefawef','efawefwf','awefawef']
"unescape('awefawef')unescape('efawefwf')unescape('awefawef')"
.match(/unescape\(\'([^\)]+)\'\)/gi)
如果有多個unescape(...)
匹配則返回與unescape
的匹配,但我只需要()
括號內的內容。Javascript匹配:僅返回子模式匹配的內容
謝謝;)
所需輸出:
['awefawef','efawefwf','awefawef']
您將需要使用ungreedy運營商只匹配括號中的內容,並讓所有的結果,你會需要調用正則表達式.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]);
您可以從RegExp.$1
得到它。
"unescape('awefawef')unescape('efawefwf')unescape('awefawef')".match(/unescape\(\'([^\)]+)\'\)/gi);
console.log(RegExp.$1); //awefawef
太酷了,不知道。無論如何,這不是全球性的嗎?其餘的搭配是什麼? – Somebody
如果你想使用捕獲,你可以使用Regex.exec()。使用您的情況:
var str = "unescape('foo')unescape('bar')unescape('baz')";
var regex = /unescape\(\'([^']+)\'\)/g;
var result;
while(result = regex.exec(str)){
alert(result[1]);
}
編輯:修正了原來的答案
是的,似乎更好的循環exec直到需要的結果或直到exec返回null。謝謝;) – Somebody
當然,添加到主帖。 – Somebody