我目前正在使用正则表达式(在 Javascript 中)用智能引号替换双引号:
// ie: "quotation" to “quotation”
这是我用来替换双引号的表达式:
str = str.replace(/"([A-Za-z ]*)"/ig, "“$1”")
如果引号内的短语不包含额外的标点符号,则上述内容非常有效,但是,我还需要替换任何撇号:
// ie: replace "It's raining again" with “It’s raining again!”
如果不封装,替换单引号/撇号的表达式可以正常工作:
str.replace(/\'\b/g, "’"); // returns it's as it’s correctly
// Using both:
str.replace(/"([A-Za-z ]*)"/ig, "“$1”").replace(/\'\b/g, "’");
// "It's raining again!" returns as "It’s raining again!"
// Ignores double quotes
我知道这是因为替换双引号的表达式仅与字母匹配,但我对正则表达式的有限经验让我对如何为可能还包含单引号的引号创建匹配感到困惑!
任何帮助将不胜感激!提前致谢。