ExtendScript中的正则表达式语法错误(Javascript ECMA-262-版本3)

时间:2018-07-22 03:49:58

标签: javascript regex extendscript

我正在尝试使用正则表达式在ExtendScript中进行一些奇特的字符串操作。我正在测试一些将单引号和双引号有效转换为“弯引号”或“智能引号”的代码。我使用herehere中的代码作为此功能的基础。

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可以解释的内容。有什么想法吗?

0 个答案:

没有答案