en.javascript.info/10-regular-expressions-javascript/9-regexp-alternation/2-match-quoted-string/solution.md
2015-04-07 15:22:06 +03:00

19 lines
No EOL
1.2 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.

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