连接由不同的正则expression式匹配的结果

你好即时通讯类似于如何用正则expression式replace句子中的句子

var string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. "Vestibulum interdum dolor nec sapien blandit a suscipit arcu fermentum. Nullam lacinia ipsum vitae enim consequat iaculis quis in augue. Phasellus fermentum congue blandit. Donec laoreet, ipsum et vestibulum vulputate, risus augue commodo nisi, vel hendrerit sem justo sed mauris." Phasellus ut nunc neque, id varius nunc. In enim lectus, blandit et dictum at, molestie in nunc. Vivamus eu ligula sed augue pretium tincidunt sit amet ac nisl. "Morbi eu elit diam, sed tristique nunc."'; // seperate the quotes var quotes = string.match(/"(.)+?"/g); var test = []; // for each quotes for (var i = quotes.length - 1; i >= 0; i--) { // replace all the dot inside the quote test[i] = quotes[i].replace(/\./g, '[dot]'); }; console.log(test); 

可以说我们已经使用正则expression式进行了修改,但是我仍然坚持如何将其join到现有的var string因为我的结果是在var test分离的? 或者更好的方法?

输出应该是类似的东西

Lorem ipsum dolor sit amet,consectetur adipiscing elit。 “先天性间充质发育不良症是一种恶性循环,发育不良的病原体是乳酸链球菌,而不是肠道菌群[点]。 justo sed mauris [dot]“相关词汇” 在enim lectus,blandit et dictum at,molestie in nunc。 Vivamus eu ligula sed augue pretium tincidunt sit amet ac nisl。 “Morbi eu elit diam,sed tristique nunc [dot]”

* PS我不知道标题是否正确

谢谢

你可以改为"在每个第二个数组元素中进行replace,然后重新join:

 var parts = string.split('"'); for (var i = 1; i < parts.length; i += 2) { parts[i] = parts [i].replace(/\./g, '[dot]'); }; string = parts.join('"'); 

由于split将在索引0处创build一个空string,如果string以"这应该在所有情况下工作。

请注意,尾随不匹配的边缘情况"将导致之后的每个点"也被replace。 如果你不想要这个,只需将条件改为i < parts.length - 1

JSFiddle演示

使用正则expression式,但具有replacefunction:

 string.replace(/"[^"]+"/g, function(m) {return m.replace(/\./g,"[dot]")})