首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript匹配:仅返回子模式匹配的内容

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

Stack Overflow用户
提问于 2011-08-05 00:24:46
回答 3查看 4.1K关注 0票数 4
代码语言:javascript
复制
"unescape('awefawef')unescape('efawefwf')unescape('awefawef')"
.match(/unescape\(\'([^\)]+)\'\)/gi)

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

谢谢;)

所需输出:

代码语言:javascript
复制
['awefawef','efawefwf','awefawef']
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-05 00:56:53

您将需要使用不贪婪的运算符来仅匹配括号中的内容,并且要获得所有结果,您将需要对同一字符串多次调用RegExp.exec。

代码语言:javascript
复制
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]);
票数 5
EN

Stack Overflow用户

发布于 2011-08-05 00:45:06

您可以从RegExp.$1获得它。

代码语言:javascript
复制
"unescape('awefawef')unescape('efawefwf')unescape('awefawef')".match(/unescape\(\'([^\)]+)\'\)/gi);
console.log(RegExp.$1); //awefawef
票数 2
EN

Stack Overflow用户

发布于 2011-08-05 00:46:22

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

代码语言:javascript
复制
var str = "unescape('foo')unescape('bar')unescape('baz')";
var regex = /unescape\(\'([^']+)\'\)/g;

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

编辑:修正了原始答案

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6945025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档