Когда метод поиска @@search
вызывается с аргументом string, выполняются следующие шаги:
1. Пусть rx будет значением this. 2. Если Type(rx) не является Object, выбросить исключение TypeError. 3. Пусть S будет ? ToString(string). 4. Пусть previousLastIndex будет ? Получить Get(rx, "lastIndex"). 5. Если SameValue(previousLastIndex, +0𝔽) является false (ложно), то а. Выполнять ? Установить Set(rx, "lastIndex", +0𝔽, true). 6. Пусть result будет ? RegExpExec(rx, S). 7. Пусть currentLastIndex будет ? Получить Get(rx, "lastIndex"). 8. Если SameValue(currentLastIndex, previousLastIndex) является false (ложно), то а. Выполнить ? Установить Set(rx, "lastIndex", previousLastIndex, true). 9. Если результат result является null, вернуть -1𝔽. 10. Вернуть ? Получить Get(result, "index").
Значение свойства «name» этой функции — «[Symbol.search]«.
Свойства «lastIndex» и «global» этого объекта RegExp игнорируются при выполнении поиска. Свойство «lastIndex» оставлено без изменений.
Информационные ссылки
Предыдущий раздел — ECMAScript | RegExp.prototype [ @@replace ] ( string, replaceValue )
Стандарт ECMAScript — Раздел «RegExp.prototype [ @@search ] ( string )» — https://tc39.es/ecma262/#sec-regexp.prototype-@@search
ECMAScript | Условные обозначения
ECMAScript | Свойства объекта-прототипа Регулярных Выражений