在RegEx中转义MS Word样式引号

时间:2010-06-21 04:20:15

标签: javascript regex

我需要转换粘贴到文本区域的字符串,这样,如果它们是从MS Word粘贴的,那么Word喜欢使用的奇怪的引号和撇号将转换为常规的单引号和双引号。不幸的是,当我保存时,我的文本编辑器似乎已经转换了这样的引号,所以我制作的任何正则表达式似乎都搞砸了。像这样的东西

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

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

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

1 个答案:

答案 0 :(得分:0)

尝试获取要删除的字符的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插件的Notepad ++来获取代码)

编辑:
有关详细信息,请参阅http://www.regular-expressions.info/unicode.html 你的代码应该是(希望我没有混合代码......):

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