如何防止此正则表达式代码删除句点?

时间:2018-09-12 11:31:15

标签: javascript regex

我正在编写代码,将哑引号转换为智能引号:

text.replace(/\b"|\."/g, '”')

(我添加了OR句号,因为有时句子以句点而不是单词结尾。)

输入:

"This is a text."

输出:

“This is a text”

所需的输出:

“This is a text.”

如您所见,该代码删除了点。

如何防止这种情况?

规则:我想替换单词末尾或句点后的哑双引号,将它们变成正确的双智能引号。

2 个答案:

答案 0 :(得分:1)

您应该将捕获组1包含在替换组中,您可以使用:

replace(/\b"$|(\.)"$/g, "$1”");

$ 1将包含。

添加$您将避免错过以下情况:

"This is a "text"."

编辑新规则:

如果您还希望替换引号的内部引号,请执行此操作>

const regex = /( ")([\w\s.]*)"(?=.*"$)|\b"$|(\.)?"$/g;
const str = `"This is a "subquote" about "life"."`;
const subst = `$1$2$3”`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

  

“您永远在公司中生活”

     

“您总是在公司中“独居””

     

“你活着”,“永远陪伴”

     

“您总是在黑暗中生活……”      

“您总是在公司中非常“孤独”地生活在“一个人”中

答案 1 :(得分:1)

请尝试以下操作:

let text = '"This is a text."'
console.log(
text.replace(/\b"|(\.)"/g,'$1\u201d')
)