ECMAScript | RegExp.prototype [ @@match ] ( string )

Когда метод сопоставления @@match вызывается с аргументом string, выполняются следующие шаги:

1. Пусть rx будет значением this.
2. Если Type(rx) не является Object, выбросить исключение TypeError.
3. Пусть S будет ? ToString(string).
4. Пусть global будет ! ToBoolean(? Get(rx, "global")).
5. Если global равно false, то
   а. Вернуть ? RegExpExec(rx, S).
6. Иначе,
   а. Утверждено: global является true.
   b. Пусть fullUnicode будет ! ToBoolean(? Get(rx, "unicode")).
   c. Выполнить ? установить Set(rx, "lastIndex", +0𝔽, true).
   d. Пусть А будет ! ArrayCreate(0).
   е. Пусть n равно 0.
   f. Повторить,
      i. Пусть result будет ? RegExpExec(rx, S).
      ii. Если результат result равен null, то
         1. Если n = 0, вернуть null.
         2. Верните A.
      iii. Иначе,
         1. Пусть matchStr будет ? ToString(? Get(result, "0")).
         2. Выполнить ! CreateDataPropertyOrThrow(A, ! ToString(𝔽(n)), matchStr).
         3. Если matchStr - пустая строка, тогда
            а. Пусть thisIndex будет (? ToLength(? Get(rx, "lastIndex"))).
            b. Пусть nextIndex будет AdvanceStringIndex(S, thisIndex, fullUnicode).
            c. Выполнить ? Установить Set(rx, "lastIndex", 𝔽(nextIndex), true).
4. Установите n равным n + 1.

Значение свойства «name» этой функции — «[Symbol.match]«.

Примечание

Свойство @@match используется абстрактной операцией IsRegExp для идентификации объектов, которые имеют базовое поведение регулярных выражений. Отсутствие свойства @@match или наличие такого свойства, значение которого не приводит к логическому принуждению к true, указывает на то, что объект не предназначен для использования в качестве объекта регулярного выражения.

Информационные ссылки

Предыдущий раздел — ECMAScript | get RegExp.prototype.ignoreCase

Стандарт ECMAScript — Раздел «» — https://tc39.es/ecma262/#sec-regexp-regular-expression-objects

ECMAScript | Условные обозначения

ECMAScript | Свойства объекта-прототипа Регулярных Выражений

Поделись записью