Regexp-Alternation: task3: Открывающая кавычка не экранируется
Задача:
Найти строки в двойных кавычках, причём строки должны поддерживать экранирование с помощью обратного слеша
Авторское решение проверяет, что закрывающая кавычка не экранирована. Но открывающую кавычку оно не проверяет.
Наверное, это потому, что если обратный слеш стоит перед открывающей кавычкой, то он как бы находится вне строки и не способен экранировать.
Я подумал, что это нужно пояснить в условии. Иначе человек может подумать, что открывающую кавычку тоже нужно проверить. Для этого ему понадобятся ретроперспективные проверки, которые рассмотрены только в следующей главе.
Строка str становится сложноватой, может быть разбить тест на несколько?
Вы правы. Сейчас сделаю
Ошибка. Двойная кавычка после обратного слеша НЕ может начинать строку.
Может:
let regexp = /"(\\.|[^"\\])*"/g; // Ваше решение
let str = ' .. \\"a" .. '; // Поставим обратный слэш перед открывающей кавычкой
alert( str.match(regexp) ); // "a" // всё ещё сопоставляется