Синтаксическая ошибка регулярного выражения в ExtendScript (Javascript ECMA-262 - Verison 3)

Я пытаюсь выполнить какие-то причудливые манипуляции со строками в ExtendScript с помощью регулярных выражений. Я тестирую код, который эффективно преобразует одинарные и двойные кавычки в «фигурные кавычки» или «умные кавычки». Я использую код из здесь и здесь в качестве основы для этой функции.

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 - это расширенный набор Javascript, соответствующий ECMA-262 версии 3, и я думаю, что реализация регулярных выражений в этой версии несколько отличается от современных версий сценария ECMA. В любом случае, кто-нибудь знает, почему я могу получить «синтаксическую ошибку», когда запускаю этот код из набора инструментов Adobe ExtendScript?

В частности, строка, о которой сообщается как имеющая синтаксическую ошибку, является следующей:

arg = arg.replace(/(^|[-\u2014/\[(\u2018\s])"/g, "$1\u201c");

Если я удалю эту строку, то синтаксическая ошибка не будет сообщаться, но тогда строка будет неправильно обработана. Я не понимаю, как преобразовать RegEx во что-то, что можно интерпретировать с помощью ExtendScript. Любые идеи?

Может быть, это из-за неэкранированной косой черты? Избавьтесь от этого и проверьте.

revo 22.07.2018 07:03

Какую именно косую черту вы имеете в виду?

ariestav 22.07.2018 13:54

В вашем регулярном выражении есть один символ косой черты.

revo 22.07.2018 13:56

Прошу прощения, но я вижу более одного в проблемной строке. Вы можете быть конкретными?

ariestav 22.07.2018 13:58

Тот, что здесь \u2014/

revo 22.07.2018 13:58

@revo ты был прав! Если экранировать косую черту, синтаксическая ошибка не сообщается. Однако похоже, что этот конкретный RegEx ничего не делает со строкой. То есть он не заменяет «открывающие двойные» кавычки на фигурные / «умные» открывающие двойные кавычки. Я не уверен, какую функцию RegEx использует эта строка, но, может быть, она не поддерживается для ECMA-262? Я слышал, что у некоторых нет "оглядки назад" или чего-то в этом роде ...

ariestav 22.07.2018 14:29

Lookbehind пока не поддерживаются (в значительной степени). Думаю, проблема кроется в самой логике.

revo 22.07.2018 14:37

И все же сам код дублируется с двух разных ресурсов.

ariestav 22.07.2018 14:38

В этом-то и дело. Это секунда моего слова.

revo 22.07.2018 14:46
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
9
177
0

Другие вопросы по теме