首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则expressionJavascript

正则expressionJavascript
EN

Stack Overflow用户
提问于 2015-06-26 19:18:02
回答 2查看 61关注 0票数 3

因此,我试图用来自我的matchedResult对象的适当值替换下面的url:

代码语言:javascript
复制
var matchedResult={
  "username": "foo",
  "token": "123"
}

var oURL = "https://graph.facebook.com/#{username}/posts?access_token=#{token}";

我尝试了以下几点:

代码语言:javascript
复制
var matchedResult={
  "username": "foo",
  "token": "123"
}

var match,
regex = /#\{(.*?)\}/g,
oURL = "https://graph.facebook.com/#{username}/posts?access_token=#{token}";
while (match = regex.exec(oURL)) {
    oURL.replace(match[0], matchedResult[match[1]])
}

console.log(oURL);

但结果仍然是

"https://graph.facebook.com/#{username}/posts?access_token=#{token}“

而不是

token=123

我在这里做错什么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-26 19:20:21

String.prototype.replace不修改原始字符串,因为JavaScript的字符串是不可变的,而是返回一个新的string对象。引用MDN的话,

replace()方法返回一个新的字符串,其部分或全部匹配的pattern替换为replacement

因此,您需要将replace的结果分配给oURL,这样旧的替换仍然在oURL中,如下所示

代码语言:javascript
复制
oURL = oURL.replace(match[0], matchedResult[match[1]]);

ECMAScript 2015 (ECMAScript 6)实现的方式

如果您所处的环境支持ECMA脚本2015的准字符串文字/模板字符串,那么您可以简单地

代码语言:javascript
复制
`https://graph.facebook.com/${matchedResult.username}/posts?access_token=${matchedResult.token}`

注意:末端的回标是新语法的一部分。

Babel在线演示

票数 6
EN

Stack Overflow用户

发布于 2015-06-26 19:20:35

您需要从

代码语言:javascript
复制
oURL.replace(match[0], matchedResult[match[1]])

代码语言:javascript
复制
oURL = oURL.replace(match[0], matchedResult[match[1]])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31080620

复制
相关文章

相似问题

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