我正在尝试使用正则表达式在ExtendScript中进行一些奇特的字符串操作。我正在测试一些将单引号和双引号有效转换为“弯引号”或“智能引号”的代码。我使用here和here中的代码作为此功能的基础。
sanitize : function (arg) {
if (arg && (typeof arg == 'string')) {
arg = arg.replace(/(^|[-\u2014\s(\["])'/g, "$1\u2018"); // opening singles
arg = arg.replace(/'/g, "\u2019"); // closing singles & apostrophes
arg = arg.replace(/(^|[-\u2014/\[(\u2018\s])"/g, "$1\u201c"); // opening doubles
arg = arg.replace(/"/g, "\u201d"); // closing doubles
arg = arg.replace(/--/g, "\u2014"); // em-dashes
}
return arg;
}
```
显然,这在浏览器中有效,但在ExtendScript脚本中无效。 ExtendScript是符合ECMA-262版本3的Javascript的超集,我认为该版本中的正则表达式实现与现代版本的ECMA脚本有所不同。无论如何,当我从Adobe的ExtendScript工具包中运行此代码时,有人知道为什么为什么会出现“语法错误”吗?
具体来说,据报告存在语法错误的行如下:
arg = arg.replace(/(^|[-\u2014/\[(\u2018\s])"/g, "$1\u201c");
如果我删除该行,则不会报告任何语法错误,但是该字符串未正确处理。我不知道如何将RegEx转换为ExtendScript可以解释的内容。有什么想法吗?