en.javascript.info/10-regular-expressions-javascript/11-regexp-alternation/03-match-quoted-string/solution.md
Ilya Kantor 1e2b09b6fb up
2017-03-20 15:26:18 +03:00

17 lines
1.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Решение задачи: `pattern:/"(\\.|[^"\\])*"/g`.
То есть:
- Сначала ищем кавычку `pattern:"`
- Затем, если далее слэш `pattern:\\` (удвоение слэша -- техническое, для вставки в регэксп, на самом деле там один слэш), то после него также подойдёт любой символ (точка).
- Если не слэш, то берём любой символ, кроме кавычек (которые будут означать конец строки) и слэша (чтобы предотвратить одинокие слэши, сам по себе единственный слэш не нужен, он должен экранировать какой-то символ) `pattern:[^"\\]`
- ...И так жадно, до закрывающей кавычки.
В действии:
```js run
var re = /"(\\.|[^"\\])*"/g;
var str = '.. "test me" .. "Скажи \\"Привет\\"!" .. "\\r\\n\\\\" ..';
alert( str.match(re) ); // "test me","Скажи \"Привет\"!","\r\n\\"
```