我有一个这样的变量text
:
“爱德华·洛伦(Lorem ipsum)多洛尔(Dolor)坐镇; conittetur教官; sed diam nonumy eirmod tempor” ut Labore”和“ sed diam voluptua”。
我想做的是替换数组中的所有符号:
var symbolsToreplace = [';', '/', '.']
逗号。另外,我想做的是不要替换引号内的任何内容,因此所有符号都保持不变。
这是正则表达式来检测报价:
var detectQuotes = /"([^"]*)"/g;
到目前为止,我已经完成了一部分任务(在这里,我将数组中的所有符号替换为','):
symbolsToreplace.map(function (s) {
if(text.indexOf(s) !== -1 ) {
text.replace(s, ',');
}
})
我如何应用正则表达式
detectQuotes
,所以引号内的符号将被忽略? 最佳答案
您可以将文本用双引号引起来,然后仅对奇数片段应用替换,然后合并结果:
var text = "Lorem ipsum dolor sit amet; consetetur sadipscing elitr; sed diam nonumy eirmod tempor \"invidunt; ut labore\" et dolore magna aliquyam erat/ sed diam voluptua.";
var delimiters = ';./',
template = new RegExp('[' + delimiters + ']','g')
var replaced = text
.split('"')
.reduce(function(previous, current, index) {
current = (index % 2 === 0) ? current.replace(template, ',') : current;
return previous + '"' + current;
}, '');
console.log(replaced);