ru.javascript.info icon indicating copy to clipboard operation
ru.javascript.info copied to clipboard

Regexp-Alternation: task3: Открывающая кавычка не экранируется

Open Batmaev opened this issue 4 years ago • 5 comments

Задача:

Найти строки в двойных кавычках, причём строки должны поддерживать экранирование с помощью обратного слеша

Авторское решение проверяет, что закрывающая кавычка не экранирована. Но открывающую кавычку оно не проверяет.

Наверное, это потому, что если обратный слеш стоит перед открывающей кавычкой, то он как бы находится вне строки и не способен экранировать.

Я подумал, что это нужно пояснить в условии. Иначе человек может подумать, что открывающую кавычку тоже нужно проверить. Для этого ему понадобятся ретроперспективные проверки, которые рассмотрены только в следующей главе.

Batmaev avatar Jul 21 '21 21:07 Batmaev

CLA assistant check
All committers have signed the CLA.

CLAassistant avatar Jul 21 '21 21:07 CLAassistant

Строка str становится сложноватой, может быть разбить тест на несколько?

iliakan avatar Nov 01 '21 17:11 iliakan

Вы правы. Сейчас сделаю

Batmaev avatar Nov 09 '21 18:11 Batmaev

Ошибка. Двойная кавычка после обратного слеша НЕ может начинать строку.

iliakan avatar Feb 03 '22 10:02 iliakan

Может:

let regexp = /"(\\.|[^"\\])*"/g;  // Ваше решение

let str = ' .. \\"a"  .. ';       // Поставим обратный слэш перед открывающей кавычкой

alert( str.match(regexp) );       //  "a"  //  всё ещё сопоставляется

Batmaev avatar Feb 03 '22 15:02 Batmaev