diff options
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/regexp/exec/index.html')
-rw-r--r-- | files/uk/web/javascript/reference/global_objects/regexp/exec/index.html | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/regexp/exec/index.html b/files/uk/web/javascript/reference/global_objects/regexp/exec/index.html new file mode 100644 index 0000000000..3a4547d559 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/regexp/exec/index.html @@ -0,0 +1,227 @@ +--- +title: RegExp.prototype.exec() +slug: Web/JavaScript/Reference/Global_Objects/RegExp/exec +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/exec +--- +<div>{{JSRef}}</div> + +<p>Метод <strong><code>exec()</code></strong> виконує пошук збігів у заданому рядку. Він повертає масив або {{jsxref("null")}}.</p> + +<p>Якщо Ви просто використовуєте регулярний вираз, щоб знайти чи є збіг чи немає використовуйте метод {{jsxref("RegExp.prototype.test()")}} або метод {{jsxref("String.prototype.search()")}}.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>regexObj</var>.exec(<var>str</var>)</code></pre> + +<h3 id="Параметри">Параметри</h3> + +<dl> + <dt><code>str</code></dt> + <dd>Рядок який буде перевірятися на збіг за регулярним виразом.</dd> +</dl> + +<h3 id="Що_повертає">Що повертає</h3> + +<p>Якщо збіг є, метод <code>exec()</code> повертає масив і оновлює властивості об'єкту регулярного виразу. На першій позиції повернутого цим методом масиву буде підрядок який задовольняє даний регулярний вираз, на наступних позиціях запам'ятовані збіги за допомогою дужок "()"</p> + +<p>Якщо збігів немає, метод <code>exec()</code> повертає {{jsxref("null")}}.</p> + +<h2 id="Опис">Опис</h2> + +<p>Розглянемо наступний приклад:</p> + +<pre class="brush: js">// Знайти такий збіг: "Швидка руда" після чого йде +// довільна кількість знаків потім слово "стрибає" +// Запам'ятати "руда" і "стрибає" +// Ігнорувати регістр літер (знайде і руда і РуДа) +var re = /швидка\s(руда).+?(стрибає)/ig; +var result = re.exec('Швидка руда лисиця стрибає через ледачого пса'); +</pre> + +<p>Таблиця підсумовує результати виконання скрипта:</p> + +<table class="fullwidth-table"> + <tbody> + <tr> + <td class="header">Об'єкт</td> + <td class="header">Властивість / Індекс</td> + <td class="header">Пояснення</td> + <td class="header">Приклад</td> + </tr> + <tr> + <td rowspan="4"><code>result</code></td> + <td><code>[0]</code></td> + <td>Рядок символів що співпали.</td> + <td><code>Швидка руда лисиця стрибає</code></td> + </tr> + <tr> + <td><code>[1], ...[<em>n</em> ]</code></td> + <td>Запам'ятовані підрядки, якщо такі є. Їхня кількість не обмежена.</td> + <td><code>[1] = руда<br> + [2] = стрибає</code></td> + </tr> + <tr> + <td><code>index</code></td> + <td>Індекс з якого починається збіг.</td> + <td><font face="Consolas, Liberation Mono, Courier, monospace">0</font></td> + </tr> + <tr> + <td><code>input</code></td> + <td>Оригінальний рядок.</td> + <td><code>Швидка руда лисиця стрибає через ледачого пса</code></td> + </tr> + <tr> + <td rowspan="5"><code>re</code></td> + <td><code>lastIndex</code></td> + <td> + <p>Індекс з якого починати пошук наступного збігу. Коли прапорець "g" непоставлено, lastIndex буде залишатися 0.</p> + </td> + <td><code>26</code></td> + </tr> + <tr> + <td><code>ignoreCase</code></td> + <td>Показує чи був використаний прапорець "<code>i</code>" для ігнорування регістру літер.</td> + <td><code>true</code></td> + </tr> + <tr> + <td><code>global</code></td> + <td>Показує чи був використаний прапорець "<code>g</code>" для глобального пошуку.</td> + <td><code>true</code></td> + </tr> + <tr> + <td><code>multiline</code></td> + <td>Показує чи був використаний прапорець "<font face="Consolas, Liberation Mono, Courier, monospace">m</font>" для пошуку.</td> + <td><code>false</code></td> + </tr> + <tr> + <td><code>source</code></td> + <td>Сам регулярний вираз.</td> + <td>швидка\s(руда).+?(стрибає)</td> + </tr> + </tbody> +</table> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="Пошук_наступних_збігів">Пошук наступних збігів</h3> + +<p>Якщо регулярний вираз використовує прапорець "<code>g</code>", Ви можете використовувати метод <code>exec() багато разів для того, щоб знайти наступні збіги у рядку з яким працюєте.</code> Якщо Ви так зробите, пошук почнеться з індексу який заданий властивістю {{jsxref("RegExp.lastIndex", "lastIndex")}} ( метод {{jsxref("RegExp.prototype.test()", "test()")}} також змінює властивість {{jsxref("RegExp.lastIndex", "lastIndex")}} ). Для прикладу, припустимо Ви маєте такий скрипт:</p> + +<pre class="brush: js">var myRe = /ab*/g; +var str = 'abbcdefabh'; +var myArray; +while ((myArray = myRe.exec(str)) !== null) { + var msg = 'Знайдено ' + myArray[0] + '. '; + msg += 'Наступний пошук почнеться з індексу ' + myRe.lastIndex; + console.log(msg); +} +</pre> + +<p>Це скрипт виведе таке:</p> + +<pre>Знайдено abb. Наступний пошук почнеться з індексу 3 +Знайдено ab. Наступний пошук почнеться з індексу 9 +</pre> + +<p>Увага: Не створюйте об'єкт (через конструктор {{jsxref("RegExp")}}) або літерал регулярного виразу в умові циклу <code>while</code> оскільки це призведе до нескінченного циклу оскільки властивість {{jsxref("RegExp.lastIndex", "lastIndex")}} буде перезаписуватися кожен раз на нуль і метод <code>exec </code>ніколи не поверне <font face="Consolas, Liberation Mono, Courier, monospace">null</font>. Також перевірте чи поставили прапорець "g" оскільки його відсутність також призведе до нескінченного циклу.</p> + +<h3 id="Використання_exec()_RegExp_літералами">Використання <code>exec()</code> <code>RegExp</code> літералами</h3> + +<p>Ви можете використовувати метод <code>exec()</code> без створення об'єкту {{jsxref("RegExp")}}:</p> + +<pre class="brush: js">var matches = /(hello \S+)/.exec('This is a hello world!'); +console.log(matches[1]); +</pre> + +<p>Це виведе в консоль повідомлення 'hello world!'</p> + +<h2 id="Специфікації">Специфікації</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Специфікація</th> + <th scope="col">Статус</th> + <th scope="col">Примітка</th> + </tr> + <tr> + <td>{{SpecName('ES3')}}</td> + <td>{{Spec2('ES3')}}</td> + <td>Первісне значення. Реалізовано у JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.10.6.21', 'RegExp.exec')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-regexp.prototype.exec', 'RegExp.exec')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-regexp.prototype.exec', 'RegExp.exec')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Сумісність_з_браузерами">Сумісність з браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Браузер</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базова підтримка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Браузер</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базова підтримка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Guide/Regular_Expressions">Regular Expressions</a> розділ в <a href="/en-US/docs/Web/JavaScript/Guide">JavaScript Guide</a></li> + <li>{{jsxref("RegExp")}}</li> +</ul> |