Я понятия не имею, почему я получаю это, и я потратил на день попытку испортить код. Теперь самое простое, что я могу получить (это попытка создания массива javascript с экранированной строкой, поступающей из базы данных):
vat test = '["<script>var bob = \\"This is ok\\"</script>", "<script>search.replace(/!|\\\?)/g, \\"\\")</script>"]';
Все идет нормально.
Затем это прерывает и возвращает ошибку:
JSON.parse(test);
Чтобы дать представление, исходными 2 элементами массива были следующие:
<script>var bob = "This is ok"</script>
<script>search.replace(/!|\?)/g, "")</script>
Все коды любого типа, которые были введены в базу данных, всегда работали, за исключением теперь, из-за этого вопросительного знака из введенной пользователем строки в моей CMS. Если я удалю его или заменим вопросительный знак чем-нибудь другим, он будет работать.
Я не могу изменить регулярное выражение так, чтобы оно работало каким-либо другим способом, но я не тот, кто вошел в это. Плюс это упрощенная версия целого скрипта, я просто сузил ее до вопросительного знака.
Я также посмотрел онлайн, если знак вопроса имел особое значение для json, ничего не нашел.
Хотелось бы, чтобы я отправил скрипку вместо кода, но jsfiddle не позволяет добавить тег в окне javascript.
JSON.parse('["<script>var bob = \\"This is ok\\"</script>", "<script>search.replace(/!|\\\?)/g, \\"\\")</script>"]')
SyntaxError: Unexpected token ?
Здесь есть два unescapes, поэтому вам нужно дополнительное \
перед тем ?
JSON.parse('["<script>var bob = \\"This is ok\\"</script>", "<script>search.replace(/!|\\\\?)/g, \\"\\")</script>"]')
["<script>var bob = "This is ok"</script>", "<script>search.replace(/!|\?)/g, "")</script>"]