Цей переклад триває.

Метод match() шукає та повертає (якщо є) відповідності рядка до зазначеного регулярного виразу.

Синтаксис

str.match(regexp)

Параметри

regexp
Об'єкт регулярного виразу. Якщо передати значення value іншого типу, його буде зведено до RegExp за допомогою оператора new RegExp(value). Якщо жодного параметру не вказано, метод поверне масив з одним елементом — порожнім рядком: [''].

Вертає

Вертає масив, якщо знайдено збіги. Першим елементом масиву завжди буде ввесь підрядок, що відповідає регулярному виразові, а за ним — низка захоплених підрядків, які відповідають підвиразам у круглих дужках (якщо регулярний вираз містить такі).

Якщо збігів не знайдено, метод вертає значення null.

Опис

Якщо регулярний вирає не позначено прапорцем g, виклик str.match() повертає те саме значення, що й RegExp.exec().

Повернений масив має дві додаткові властивості:

  • input: містить цілком рядок, який порівнювали із регулярним виразом;
  • index: позначає зсув (лік від нуля) знайденого підрядка всередині рядка input;

Якщо регулярний вираз позначено прапорцем g, метод вертає масив усіх знайдених підрядків. Захоплювані підвирази не повертаються. Якщо збігів не знайдено, метод повертає значення null.

Див. також інші методи RegExp

  • Якщо вам треба лише з'ясувати, відповідає рядок регулярному виразові RegExp чи ні, скористайтеся ліпше методом RegExp.test().
  • Якщо вас цікавить лише перший збіг, можете натомість використати RegExp.exec().
  • Якщо ви хочете отримати захоплені підвирази, а прапорець g встановлено, вам потрібен метод RegExp.exec().

Приклади

Використання match()

In the following example, match() is used to find 'Chapter' followed by 1 or more numeric characters followed by a decimal point and numeric character 0 or more times. The regular expression includes the i flag so that upper/lower case differences will be ignored.

var str = 'For more information, see Chapter 3.4.5.1';
var re = /see (chapter \d+(\.\d)*)/i;
var found = str.match(re);

console.log(found);

// logs [ 'see Chapter 3.4.5.1',
//        'Chapter 3.4.5.1',
//        '.1',
//        index: 22,
//        input: 'For more information, see Chapter 3.4.5.1' ]

// 'see Chapter 3.4.5.1' is the whole match.
// 'Chapter 3.4.5.1' was captured by '(chapter \d+(\.\d)*)'.
// '.1' was the last value captured by '(\.\d)'.
// The 'index' property (22) is the zero-based index of the whole match.
// The 'input' property is the original string that was parsed.

Using global and ignore case flags with match()

The following example demonstrates the use of the global and ignore case flags with match(). All letters A through E and a through e are returned, each its own element in the array.

var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var regexp = /[A-E]/gi;
var matches_array = str.match(regexp);

console.log(matches_array);
// ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']

Використання match() без параметрів

var str = "Nothing will come of nothing.";

str.match();   // returns [""]

Параметр відмінного від RegExp типу

When the parameter is a string or a number, it is implicitly converted to a RegExp by using new RegExp(obj). If it is a positive number with a positive sign,the RegExp() method will ignore the positive sign.

var str1 = "NaN means not a number. Infinity contains -Infinity and +Infinity in JavaScript.",
    str2 = "My grandfather is 65 years old and My grandmother is 63 years old.",
    str3 = "The contract was declared null and void.";
str1.match("number");   // "number" is a string. returns ["number"]
str1.match(NaN);        // the type of NaN is the number. returns ["NaN"]
str1.match(Infinity);   // the type of Infinity is the number. returns ["Infinity"]
str1.match(+Infinity);  // returns ["Infinity"]
str1.match(-Infinity);  // returns ["-Infinity"]
str2.match(65);         // returns ["65"]
str2.match(+65);        // A number with a positive sign. returns ["65"]
str3.match(null);       // returns ["null"]

Специфікації

Специфікація Статус Коментар
ECMAScript 3rd Edition (ECMA-262) Standard Початкова виознака. Запроваджено у JavaScript 1.2.
ECMAScript 5.1 (ECMA-262)
The definition of 'String.prototype.match' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'String.prototype.match' in that specification.
Standard  
ECMAScript Latest Draft (ECMA-262)
The definition of 'String.prototype.match' in that specification.
Draft  

Підтримка веб-переглядачами

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support Yes Yes Yes Yes Yes Yes
flags No No Yes — 49 No No No
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support Yes Yes Yes Yes Yes Yes ?
flags No No No No No No ?

Зауваги щодо Firefox

  • flags was a non standard second argument only available in Gecko : str.match(regexp, flags)
  • Starting with Gecko 27 (Firefox 27 / Thunderbird 27 / SeaMonkey 2.24), this method has been adjusted to conform with the ECMAScript specification. When match() is called with a global regular expression, the RegExp.lastIndex property (if specified) will be reset to 0 (bug 501739).
  • Starting with Gecko 39 (Firefox 39 / Thunderbird 39 / SeaMonkey 2.36), the non-standard flags argument is deprecated and throws a console warning (bug 1142351).
  • Starting with Gecko 47 (Firefox 47 / Thunderbird 47 / SeaMonkey 2.44), the non-standard flags argument is no longer supported in non-release builds and will soon be removed entirely (bug 1245801).
  • Starting with Gecko 49 (Firefox 49 / Thunderbird 49 / SeaMonkey 2.46), the non-standard flags argument is no longer supported (bug 1108382).

Див. також

Мітки документа й учасники

 Зробили внесок у цю сторінку: asmforce, AlexViki
 Востаннє оновлена: asmforce,