首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引用“相对”子模式的正则表达式

引用“相对”子模式的正则表达式
EN

Stack Overflow用户
提问于 2014-02-08 01:53:43
回答 2查看 77关注 0票数 1

我试图做一个正则表达式替换,以便从一个相当长的列表中将连字符插入到每组单词对中。简单地说,我想作出以下转变:

  • 双盲->双盲
  • 成本效益->成本效益

我最初的想法是这样做:

代码语言:javascript
复制
str.replace(/((double) (blind)|(cost) (effective))/g,"$2-$3");

但是,引用指向绝对子模式索引,因此“成本效益”将被删除,而不是连字符,因为第二子模式和第三子模式不匹配。我需要引用第一和第二匹配子模式的东西。对于Javascript正则表达式,这是可能的吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-08 02:05:43

你可以做一些下流的事

代码语言:javascript
复制
str.replace(/((double) (blind)|(cost) (effective))/g,"$2$4-$3$5");

如果您想要更清楚一些,那么使用回调作为replace的第二个参数可能是可行的。

但是,我想不出有一种方法可以让$2引用第一个匹配,而$3引用第二个匹配,不管您匹配哪一个选项。

票数 0
EN

Stack Overflow用户

发布于 2014-02-08 02:17:30

代码语言:javascript
复制
var regex = /(double blind|cost effective)/g;
"double blind blahy blah cost effective".replace(regex, function (match) { return match.replace(" ", "-") });

您可能可以通过一个连接将所有短语添加到regex中:

代码语言:javascript
复制
var phrases = ['double blind', 'cost effective'];
var regex = new RegExp("(" + phrases.join("|") + ")", "g")

诸若此类。不过,我不知道与单纯使用迭代替换相比,您是否得到了那么大的改进。

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

https://stackoverflow.com/questions/21640913

复制
相关文章

相似问题

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