在正则表达式中转义MSWord样式引号

问题描述:

我需要将字符串粘贴到文本区域,以便如果从MS Word粘贴它们时,Word喜欢使用的奇怪的引号和撇号将转换为常规单引号和双引号引号。不幸的是,当我保存时,我的文本编辑器似乎已经转换了这些引号,所以我所做的任何正则表达式似乎都会变得混乱。所以像这样的东西在正则表达式中转义MSWord样式引号

string = string.replace(new RegExp("“", "g"), '"').replace(new RegExp("”", "g"), '"').replace(new RegExp("’", "g"), "'"); 

似乎不工作。 (我甚至不知道它是否会在这里正确发布)

如何使用所有“常规”字符构造正则表达式来查找这些引号?大概是一个逃生序列?即使创建对象较慢,我也更愿意避免使用RegExp“文字”符号。

尝试获得要删除的字符的ASCII代码,并使用它来代替字符本身的:

string = string.replace(new RegExp("\xe2\x80\x9c", "g"), '"').replace(new RegExp("\xe2\x80\x9d", "g"), '"').replace(new RegExp("\xe2\x80\x99", "g"), "'"); 

(我用记事本+ +与hexedit的插件获取代码)

编辑:
请参阅http://www.regular-expressions.info/unicode.html了解更多详情。
您的代码应该是(希望我没有混码...):似乎

string = string.replace(new RegExp("\u201c", "g"), '"').replace(new RegExp("\u201d", "g"), '"').replace(new RegExp("\u2019", "g"), "'"); 
+0

这不工作。如果我使用charCodeAt()来检查,我得到了十进制的8217,8220和8221,它是十六进制的2019 201C 201D。不知道如何形成正则表达式。 – rob 2010-06-21 07:19:42