javascript - 连接由不同正则表达式匹配分隔的结果

标签 javascript regex node.js

你好,我正在做类似 how to replace dots inside quote in sentence with regex 的事情

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);

假设我们已经使用正则表达式进行了更改,但我一直困惑于如何将其连接回现有的 var string,因为我的结果在 var test 中分开> ?或者有更好的方法吗?

输出应该类似于

Lorem ipsum dolor sit amet, consectetur adipiscing elit. "Vestibulum interdum dolor nec sapien blandit a suscipit arcu fermentum[dot]Nullam lacinia ipsum vitae enim consequat iaculis quis in augue[dot] Phasellus fermentum congue blandit[dot] Donec laoreet, ipsum et vestibulum vulputate, risus augue commodo nisi, vel hendrerit sem justo sed mauris[dot]" 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[dot]"

*ps 我不确定标题是否正确

谢谢

最佳答案

您可以直接在 " 处拆分,在每隔一个数组元素中进行替换,然后再次加入:

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 创建一个空字符串如果字符串以 " 开头这应该适用于所有情况。

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

JSFiddle Demo

关于javascript - 连接由不同正则表达式匹配分隔的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13140815/

相关文章:

Python正则表达式

javascript - 为什么 npm run serve 在 Vue.js 上构建缓慢?

javascript - 如何在aws lambda函数中使用setInterval

javascript - 像素操作和 Canvas

javascript - backbone.js 路由器无法在 IE6 上运行

c# - ASP.NET 将参数传递给母版页中的 Javascript 函数

javascript - 当数组中的一对值相继出现时,如何定位它们?

regex - 字符串末尾的模式匹配(postgres)

regex - 在 Bash 中使用 2 个不同的分隔符拆分字符串

node.js - 调用 activator.init 后,Sequelize 急切加载会引发错误