aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/javascript/reference/global_objects/string/match/index.html
blob: ebcc53c5743a4bf166bc2d581339f25b4f7386c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
---
title: String.prototype.match()
slug: Web/JavaScript/Reference/Global_Objects/String/match
tags:
  - JavaScript
  - Method
  - Prototype
  - Reference
  - Regular Expressions
  - String
translation_of: Web/JavaScript/Reference/Global_Objects/String/match
---
<div>{{JSRef("Global_Objects", "String")}}</div>

<h2 id="Summary" name="Summary">Сводка</h2>

<p>Метод <strong><code>match()</code></strong> возвращает получившиеся совпадения при сопоставлении <em>строки</em> с <em>регулярным выражением</em>.</p>

<h2 id="Syntax" name="Syntax">Синтаксис</h2>

<pre class="syntaxbox"><code><var>str</var>.match(<var>regexp</var>)</code></pre>

<h3 id="Parameters" name="Parameters">Параметры</h3>

<dl>
 <dt><code>regexp</code></dt>
 <dd>Объект регулярного выражения. Если будет передан объект <code>obj</code>, не являющийся регулярным выражением, он будет неявно преобразован в объект {{jsxref("Global_Objects/RegExp", "RegExp")}} через вызов конструктора <code>new RegExp(obj)</code>.</dd>
</dl>

<h3 id="Returns" name="Returns">Возвращаемое значение</h3>

<dl>
 <dt><code>array</code></dt>
 <dd>Объект {{jsxref("Global_Objects/Array", "Array")}}, содержащий результаты сопоставления, или {{jsxref("Global_Objects/null", "null")}}, если ничего не было сопоставлено.</dd>
</dl>

<h2 id="Description" name="Description">Описание</h2>

<p>Если регулярное выражение не содержит флаг <code>g</code>, возвращаемый результат будет тем же самым, что и при вызове метода {{jsxref("RegExp.prototype.exec()", "RegExp.exec()")}}. Возвращаемый объект {{jsxref("Global_Objects/Array", "массива", "", 1)}} имеет дополнительное свойство <code>input</code>, которое содержит оригинальную строку. Кроме того, он имеет свойство <code>index</code>, которое представляет индекс (нумерация с нуля) сопоставления в строке.</p>

<p>Если регулярное выражение содержит флаг <code>g</code>, метод вернёт {{jsxref("Global_Objects/Array", "массив", "", 1)}}, содержащий все сопоставления. Если сопоставлений не было, метод вернёт значение {{jsxref("Global_Objects/null", "null")}}.</p>

<h3 id="See_also_RegExp_methods" name="See_also:_RegExp_methods">Смотрите также: методы объекта <code>RegExp</code></h3>

<ul>
 <li>Если вам надо просто узнать, подпадает ли строка под регулярное выражение, используйте метод {{jsxref("String.prototype.search()", "search()")}}.</li>
 <li>Если вам нужно найти только первое сопоставление, вы можете использовать метод {{jsxref("RegExp.prototype.exec()", "RegExp.exec()")}}.</li>
</ul>

<h2 id="Examples" name="Examples">Примеры</h2>

<h3 id="Example_Using_match" name="Example:_Using_match">Пример: использование метода <code>match()</code></h3>

<p>В следующем примере метод <code>match()</code> используется для поиска слова <code>'Глава'</code>, за которым следуют 1 или более цифр, за которыми следуют 0 или более раз группы из точки и цифры. Регулярное выражение включает флаг <code>i</code>, так что регистр букв игнорируется.</p>

<pre class="brush: js">var str = 'Глава 3.4.5.1 содержит дополнительную информацию';
var re = /(глава \d+(\.\d)*)/i;
var found = str.match(re);

console.log(found);

// выведет [ 'Глава 3.4.5.1',
//           'Глава 3.4.5.1',
//           '.1',
//           index: 0,
//           input: 'Глава 3.4.5.1 содержит дополнительную информацию' ]

// 'Глава 3.4.5.1' - это первое сопоставление и первое значение,
// сопоставленное с группой `(Глава \d+(\.\d)*)`.
// '.1' - это последнее значение, сопоставленное с группой `(\.\d)`.
// Свойство 'index' содержит значение (0) индекса совпадения
// относительно начала сопоставления
// Свойство 'input' содержит значение введенной строки.</pre>

<h3 id="Example_Using_global_and_ignore_case_flags_with_match" name="Example:_Using_global_and_ignore_case_flags_with_match">Пример: использование флагов глобальности и игнорирования регистра с методом <code>match()</code></h3>

<p>Следующий пример демонстрирует использование флагов глобального поиска и игнорирования регистра символов вместе с методом <code>match()</code>. Возвращаются все буквы от А до Д и от а до д, каждая в своём элементе массива.</p>

<pre class="brush: js">var str = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя';
var regexp = /[А-Д]/gi;
var matches_array = str.match(regexp);

console.log(matches_array);
// ['А', 'Б', 'В', 'Г', 'Д', 'а', 'б', 'в', 'г', 'д']
</pre>

<h2 id="Specifications" name="Specifications">Спецификации</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Спецификация</th>
   <th scope="col">Статус</th>
   <th scope="col">Комментарии</th>
  </tr>
  <tr>
   <td>ECMAScript 3-е издание.</td>
   <td>Стандарт</td>
   <td>Изначальное определение. Реализована в JavaScript 1.2.</td>
  </tr>
  <tr>
   <td>{{SpecName('ES5.1', '#sec-15.5.4.10', 'String.prototype.match')}}</td>
   <td>{{Spec2('ES5.1')}}</td>
   <td></td>
  </tr>
  <tr>
   <td>{{SpecName('ES6', '#sec-string.prototype.match', 'String.prototype.match')}}</td>
   <td>{{Spec2('ES6')}}</td>
   <td></td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</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 для 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>

<h3 id="Firefox-specific_notes" name="Firefox-specific_notes">Примечания по Firefox</h3>

<ul>
 <li>Начиная с Gecko 27 {{geckoRelease(27)}}, этот метод был поправлен для соотвествия спецификации ECMAScript. При вызове метода <code>match()</code> с глобальным регулярным выражением, свойство {{jsxref("RegExp.lastIndex")}} (если оно определено) будет сбрасываться в <code>0</code> ({{bug(501739)}}).</li>
</ul>

<h2 id="See_also" name="See_also">Смотрите также</h2>

<ul>
 <li>{{jsxref("RegExp.prototype.exec()")}}</li>
 <li>{{jsxref("RegExp.prototype.test()")}}</li>
</ul>