Показать сообщение отдельно
  #1 (permalink)  
Старый 09.06.2015, 02:46
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

Регулярное выражение
var re = /"(\\.|[^"\\])*?"/i;

console.log( '"Скажи \\"Привет\\"!"'.match(re) );


Я чет не могу понять это регулярное выражение.

Сначала ищется кавычка ("), после кавычки должен быть обратный слэш (\) и любой символ, кроме перевода строки. Или любой символ кроме кавычки (") и слэша (\). И к этой группе добавляется квантификатор (*) - ноль или более символов без жадности. И затем вторая кавычка (").

Что получается? Кавычка совпадает сразу, затем вот это (\\.) отпадает, т.к после кавычки идут буквы. Получается, что регэксп начинает искать (^"\\)*?. А в середине строки встречаются слэши (\). Получается, что должно быть только совпадение подстроки "!"? Но почему то совпадает вся строка.
Ответить с цитированием