recursal/MDN huggingface dataset:
RegExp.prototype[@@split]()
===========================

**`[@@split]()`** метод делит объект `String` в массив строк, путём разбиения строки на подстроки.

Интерактивный пример
--------------------

Синтаксис
---------
```

regexp[Symbol.split](str[, limit])
```

### Параметры

`str`

Цель разбиения.

`limit`

Необязательное. Целое число ограничивающее кол-во разбиений. `[@@split]()` метод разбивает все совпадения `this` RegExp шаблона, до тех пор пока не достигнет числа `limit` или строка будет короче `this` шаблона.

### Возвращаемое значение

`Array` содержит подстроки как элементы.

Описание
--------

Этот метод вызывает `String.prototype.split()`, если аргумент `separator` объект `RegExp`. Для примера, два данных выражения возвращают одинаковый результат.


```js
"a-b-c".split(/-/);

/-/[Symbol.split]("a-b-c");
```


Этот метод существует для кастомизации поведения (разбиения) подкласса `RegExp`.

Если аргумент `str` **не** объект типа `RegExp`, метод `String.prototype.split()` не вызывается, так же не создаётся объект типа `RegExp`.

Примеры
-------

### Прямой вызов

Этот метод может быть использован, так же как `String.prototype.split()`, кроме случаев когда `this` отличаются и аргументы идут в разном порядке.


```js
var re = /-/g;
var str = "2016-01-02";
var result = re[Symbol.split](str);
console.log(result); // ["2016", "01", "02"]
```

### Использование `@@split` в подклассах

Подклассы `RegExp` могут переопределить `[@@split]()` для изменения стандартного поведения.


```js
class MyRegExp extends RegExp {
  [Symbol.split](str, limit) {
    var result = RegExp.prototype[Symbol.split].call(this, str, limit);
    return result.map((x) => "(" + x + ")");
  }
}

var re = new MyRegExp("-");
var str = "2016-01-02";
var result = str.split(re); // String.prototype.split calls re[@@split].
console.log(result); // ["(2016)", "(01)", "(02)"]
```

Specifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-regexp.prototype-@@split |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* `String.prototype.split()`
* `RegExp.prototype[@@match]()` (en-US)
* `RegExp.prototype[@@replace]()` (en-US)
* `RegExp.prototype[@@search]()`
* `RegExp.prototype.exec()`
* `RegExp.prototype.test()`
RegExp.prototype.toString()
===========================

Сводка
------

Метод **`toString()`** возвращает строковое представление регулярного выражения.

Синтаксис
---------
```

regexObj.toString()
```

### Параметры

Нет.

Описание
--------

Объект `RegExp` переопределяет метод `toString()` объекта `Object`; он не наследует метод `Object.prototype.toString()`. Для объектов `RegExp`, метод `toString()` возвращает строковое представление регулярного выражения.

Примеры
-------

### Пример: использование метода `toString()`

Следующий пример отображает строковое значение объекта `RegExp`:


```js
var myExp = new RegExp("a+b+c");
console.log(myExp.toString()); // отобразит '/a+b+c/'

var foo = new RegExp("bar", "g");
console.log(foo.toString()); // отобразит '/bar/g'
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-regexp.prototype.tostring |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `Object.prototype.toString()`
RegExp.prototype[@@search]()
============================

Метод **`[@@search]()`** выполняет поиск совпадения между регулярным выражением `this` и строкой.

Синтаксис
---------
```

regexp[Symbol.search](str)
```

### Параметры

`str`

`String`, являющийся объектом поиска.

### Возвращаемое значение

integer

В случае успеха, `[@@search]()` вернёт индекс первого совпадения регулярного выражения внутри строки. В противном случае, он вернёт -1.

Описание
--------

Этот метод вызывается внутреннее в `String.prototype.search()`. Например, два следующих примера вернут один и тот же результат.


```js
"abc".search(/a/);

/a/[Symbol.search]("abc");
```


Этот метод существует для настройки поведения поиска в подклассах `RegExp`.

Примеры
-------

### Прямой вызов

Этот метод можно использовать почти так же, как `String.prototype.search()`, за исключением другого `this` и другого порядка аргументов.


```js
var re = /-/g;
var str = "2016-01-02";
var result = re[Symbol.search](str);
console.log(result); // 4
```

### Используя `@@search` в подклассах

Подкласс `RegExp` может быть перезаписан с помощью метода `[@@search]()` для изменения поведения.


```js
class MyRegExp extends RegExp {
  constructor(str) {
    super(str);
    this.pattern = str;
  }
  [Symbol.search](str) {
    return str.indexOf(this.pattern);
  }
}

var re = new MyRegExp("a+b");
var str = "ab a+b";
var result = str.search(re); // String.prototype.search calls re[@@search].
console.log(result); // 3
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-regexp.prototype-@@search |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `String.prototype.search()`
* `RegExp.prototype[@@match]()` (en-US)
* `RegExp.prototype[@@replace]()` (en-US)
* `RegExp.prototype[@@split]()`
* `RegExp.prototype.exec()`
* `RegExp.prototype.test()`
RegExp.prototype.flags
======================

Сводка
------

Свойство **`flags`** возвращает строку, состоящую из флагов текущего регулярного выражения.

Описание
--------

Флаги в свойстве `flags` упорядочены по алфавиту (слева направо, то есть `"gimuy"`).

Примеры
-------

### Пример: использование свойства `flags`


```js
/foo/gi.flags; // "gi"
/bar/muy.flags; // "muy"
```

Полифил
-------


```js
if (RegExp.prototype.flags === undefined) {
  Object.defineProperty(RegExp.prototype, "flags", {
    configurable: true,
    get: function () {
      return this.toString().match(/[gimuy]\*$/)[0];
    },
  });
}
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-regexp.prototype.flags |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `RegExp.prototype.source`
RegExp.prototype.global
=======================

Сводка
------

Свойство **`global`** указывает, использовался ли в определении регулярного выражения флаг `"g"`. Свойство `global` является свойством только для чтения и принадлежит экземпляру регулярного выражения.

| Атрибуты свойства `RegExp.prototype.global` |
| --- |
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |

Описание
--------

Значение свойства `global` имеет тип `Boolean` и содержит `true`, если при определении регулярного выражения использовался флаг `"g"`; в противном случае оно содержит `false`. Флаг `"g"` указывает на то, что регулярное выражение должно проверять все возможные сопоставления в строке.

Вы не можете напрямую изменить это свойство.

Примеры
-------

### Пример: использование свойства `global`


```js
var regex = new RegExp("foo", "g");

console.log(regex.global); // true
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-regexp.prototype.global |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `RegExp.lastIndex`
* `RegExp.prototype.ignoreCase`
* `RegExp.prototype.multiline`
* `RegExp.prototype.source`
* `RegExp.prototype.sticky`
RegExp.prototype.sticky
=======================

Сводка
------

Свойство **`sticky`** отражает тот факт, является ли поиск «липким» (то есть, начинается ли он с индекса, на который указывает свойство `lastIndex` регулярного выражения). Свойство `sticky` является свойством только для чтения и принадлежит экземпляру регулярного выражения.

| Атрибуты свойства `RegExp.prototype.sticky` |
| --- |
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |

Описание
--------

Значение свойства **`sticky`** имеет тип `Boolean` и содержит `true`, если при определении регулярного выражения использовался флаг `"y",` в противном случае оно содержит `false`. Флаг `"y"` указывает на то, что регулярное выражение сопоставляется с целевой строкой начиная с позиции, на которую указывает его свойство `lastIndex` (и не пытается сопоставиться по любому более старшему индексу). Такое поведение позволяет эффективно использовать символ `"^"` сопоставления-с-началом в любом месте строки путём смены значения свойства `lastIndex`.

Вы не можете напрямую изменить это свойство.

Примеры
-------

### Пример: использование регулярных выражений с флагом «липучести»

Этот пример демонстрирует, как можно использовать флаг «липучести» регулярных выражений для сопоставления с отдельными строками многострочного ввода.


```js
var text = "Первая строка\nВторая строка";
var regex = /(\S+) строка\n?/y;

var match = regex.exec(text);
console.log(match[1]); // напечатает 'Первая'
console.log(regex.lastIndex); // напечатает '14'

var match2 = regex.exec(text);
console.log(match2[1]); // напечатает 'Вторая'
console.log(regex.lastIndex); // напечатает '27'

var match3 = regex.exec(text);
console.log(match3 === null); // напечатает 'true'
```

Проверка совместимости
----------------------

Во время выполнения можно проверить, поддерживается ли флаг «липучести», при помощи блока `try { … } catch { … }`. Для этого надо использовать либо выражение с `eval(…)`, либо конструктор `RegExp(строка регулярного выражения, строка-с-флагами)` (поскольку нотация `/регулярное выражение/флаги` обрабатывается во время компиляции, исключение будет выброшено до того, как выполнение достигнет блока `catch`). Например:


```js
var supports_sticky;
try {
  RegExp("", "y");
  supports_sticky = true;
} catch (e) {
  supports_sticky = false;
}
console.log(supports_sticky); // напечатает 'false' в Firefox 2 и 'true' в Firefox 3+
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-regexp.prototype.sticky |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `RegExp.lastIndex`
* `RegExp.prototype.global`
* `RegExp.prototype.ignoreCase`
* `RegExp.prototype.multiline`
* `RegExp.prototype.source`
RegExp.prototype.unicode
========================

Свойство unicode указывает, используется ли флаг «u» с регулярным выражением. Свойство unicode доступно только для чтения конкретного экземпляра регулярного выражения.

Интерактивный пример
--------------------

| Атрибуты свойства `RegExp.prototype.unicode` |
| --- |
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | да |

Описание
--------

Значение unicode является `Boolean`. True, если используется флаг u, или false - противном случае. Флаг «u» позволяет использовать различные функции, связанные с Unicode. С флагом «u» любые escape-последовательности кода Unicode будут интерпретироваться как таковые, например.

Вы не можете напрямую изменить это свойство. Оно доступно только для чтения.

Примеры
-------

### Использование свойства `unicode`


```js
var regex = new RegExp("\u{61}", "u");

console.log(regex.unicode); // true
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-regexp.prototype.unicode |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `RegExp.lastIndex`
* `RegExp.prototype.global`
* `RegExp.prototype.ignoreCase`
* `RegExp.prototype.multiline`
* `RegExp.prototype.source`
* `RegExp.prototype.sticky`
RegExp.lastIndex
================

Сводка
------

Свойство **`lastIndex`** является целочисленным свойством регулярного выражения, доступным как для чтения, так и для записи, которое определяет индекс, с которого следует начинать следующее сопоставление.

| Атрибуты свойства `RegExp.lastIndex` |
| --- |
| Записываемое | да |
| Перечисляемое | нет |
| Настраиваемое | нет |

Синтаксис
---------
```

regExpObj.lastIndex
```

Описание
--------

Это свойство устанавливается только в том случае, если в регулярном выражении используется флаг `"g"`, указывающий на необходимость глобального поиска. Оно подчиняется следующим правилам:

* Если свойство `lastIndex` больше длины строки, методы `test()` и `exec()` завершатся с неудачей, а свойство `lastIndex` будет установлено в 0.
* Если свойство `lastIndex` равно длине строки и регулярное выражение сопоставляется с пустой строкой, то регулярное выражение начнёт сопоставляться, начиная с позиции `lastIndex`.
* Если свойство `lastIndex` равно длине строки и регулярное выражение не сопоставляется с пустой строкой, то регулярное выражение не соответствует входу и свойство `lastIndex` сбрасывается в 0.
* Во всех остальных случаях свойство `lastIndex` устанавливается в позицию, следующую за самым последним сопоставлением.
Примеры
-------

### Пример: использование свойства `lastIndex`

Рассмотрим следующую последовательность инструкций:


```js
var re = /(привет)?/g;
```


Сопоставляется с пустой строкой.


```js
console.log(re.exec("привет"));
console.log(re.lastIndex);
```


Выведет массив `["привет", "привет"]`, а свойство `lastIndex` будет равным 6.


```js
console.log(re.exec("привет"));
console.log(re.lastIndex);
```


Выведет массив `["", undefined]`, «пустой» массив, чей нулевой элемент является сопоставившейся строкой. В данном случае, ей является пустая строка, поскольку свойство `lastIndex` было равно 6 (и остаётся равным 6), а строка `"привет"` имеет длину 6.

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-properties-of-regexp-instances |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `RegExp.prototype.ignoreCase`
* `RegExp.prototype.global`
* `RegExp.prototype.multiline`
* `RegExp.prototype.source`
* `RegExp.prototype.sticky`
RegExp.prototype.source
=======================

Сводка
------

Свойство **`source`** возвращает строку, содержащую текст шаблона регулярного выражения без прямых слешей с обеих сторон и без флагов регулярного выражения.

Примеры
-------

### Пример: использование свойства `source`


```js
var regex = /fooBar/gi;

console.log(regex.source); // 'fooBar', не содержит прямые слеши /.../ и флаги 'ig'.
```


Начиная с ECMAScript 5, свойство `source` больше не возвращает пустую строку для пустых регулярных выражений. Вместо этого, возвращается строка" (?:)". Кроме того, теперь экранируются символы окончания строк (такие как, "\n").
```

new RegExp().source; // "(?:)"

new RegExp('\n').source === '\n';  // true, до появления ES5
new RegExp('\n').source === '\\n'; // true, начиная с ES5
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-regexp.prototype.source |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `RegExp.prototype.flags`
RegExp.input ($\_)
==================

**Не стандартно:** Эта возможность не является стандартной и стандартизировать её пока никто не собирается. Не используйте её на сайтах, смотрящих во внешний мир: она будет работать не у всех пользователей. Также могут присутствовать большие несовместимости между реализациями и её поведение может в будущем измениться.

Нестандартное свойство **`input`** является статическим свойством регулярных выражений. Оно содержит строку, для которой произошло совпадение по регулярному выражению. Значение свойства также можно получить как `RegExp.$_`.

Синтаксис
---------
```

RegExp.input
RegExp.$_
```

Описание
--------

Поскольку свойство `input` статическое, к нему можно обратиться только как `RegExp.input` или `RegExp.$_`.

Значение данного свойства изменяется каждый раз при возникновении совпадений с регулярным выражением для новой строки.

Примеры
-------

### Использование `input` и `$_`


```js
var re = /hi/g;
re.test("hi there!");
RegExp.input; // "hi there!"
re.test("foo"); // новая проверка, совпадений нет
RegExp.$_; // "hi there!"
re.test("hi world!"); // новая проверка, совпадение есть
RegExp.$_; // "hi world!"
```

Спецификация
------------

Не стандартизированной. Не является частью какой-либо спецификации.

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* Non-standard
 `RegExp.lastMatch ($&)`
* Non-standard
 `RegExp.lastParen ($+)` (en-US)
* Non-standard
 `RegExp.leftContext ($`)` (en-US)
* Non-standard
 `RegExp.rightContext ($')` (en-US)
* Non-standard
 `RegExp.$1-$9`
RegExp.$1-$9
============

**Не стандартно:** Эта возможность не является стандартной и стандартизировать её пока никто не собирается. Не используйте её на сайтах, смотрящих во внешний мир: она будет работать не у всех пользователей. Также могут присутствовать большие несовместимости между реализациями и её поведение может в будущем измениться.

Нестандартные свойства **$1, $2, $3, $4, $5, $6, $7, $8, $9** являются статическими и доступными только для чтения свойствами регулярных выражений, которые содержат найденные подстроки, обёрнутые в скобки.

Синтаксис
---------
```

RegExp.$1
RegExp.$2
RegExp.$3
RegExp.$4
RegExp.$5
RegExp.$6
RegExp.$7
RegExp.$8
RegExp.$9
```

Описание
--------

Свойства $1, ..., $9 являются статичными, они не являются свойствами конкретного объекта регулярного выражения, поэтому вы всегда можете использовать их как `RegExp.$1`, ..., `RegExp.$9`.

Значения этих свойств не доступны для изменения, они модифицируются всякий раз при успешном совпадении регулярного выражения.

Количество возможных подстрок в круглых скобках неограничено, но объект `RegExp` может содержать в себе только последние 9. Вы можете получить доступ ко всем подстрокам, совпавшим с выражениями внутри круглых скобок, с помощью индексов возвращённого массива.

Эти свойства могу использоваться при замене текста в методе `String.replace`. Когда используете его, не добавляйте их в `RegExp`. Пример ниже демонстрирует правильное применение. Когда круглые скобки не включены в регулярное выражение, код интерпретирует такие значения, как `$n` буквально, как литерал (n - положительное число).

Примеры
-------

### Использование `$n` со `String.replace`

Следующий код использует метод `replace()` строки `String`, чтобы преобразовать строку в формате *Имя Фамилия* в формат *Фамилия, Имя*. В коде замены текста используются `$1` и `$2` чтобы указать порядок вывода результата совпадений полученных при сравнивании с шаблоном регулярного выражения, имеющего круглые скобки.


```js
var re = /(\w+)\s(\w+)/;
var str = "John Smith";
str.replace(re, "$2, $1"); // "Smith, John"
RegExp.$1; // "John"
RegExp.$2; // "Smith"
```

Спецификация
------------

Не стандартизированной. Не является частью какой-либо спецификации

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* Non-standard
 `RegExp.input ($_)`
* Non-standard
 `RegExp.lastMatch ($&)`
* Non-standard
 `RegExp.lastParen ($+)` (en-US)
* Non-standard
 `RegExp.leftContext ($`)` (en-US)
* Non-standard
 `RegExp.rightContext ($')` (en-US)
RegExp.prototype.ignoreCase
===========================

Сводка
------

Свойство **`ignoreCase`** указывает, использовался ли в определении регулярного выражения флаг `"i"`. Свойство `ignoreCase` является свойством только для чтения и принадлежит экземпляру регулярного выражения.

| Атрибуты свойства `RegExp.prototype.ignoreCase` |
| --- |
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |

Описание
--------

Значение свойства `ignoreCase` имеет тип `Boolean` и содержит `true`, если при определении регулярного выражения использовался флаг `"i"`; в противном случае оно содержит `false`. Флаг `"i"` указывает на то, что регистр символов в строке, с которой сопоставляется регулярное выражение, должен игнорироваться.

Вы не можете напрямую изменить это свойство.

Примеры
-------

### Пример: использование свойства `ignoreCase`


```js
var regex = new RegExp("foo", "i");

console.log(regex.ignoreCase); // true
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-regexp.prototype.ignorecase |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `RegExp.lastIndex`
* `RegExp.prototype.global`
* `RegExp.prototype.multiline`
* `RegExp.prototype.source`
* `RegExp.prototype.sticky`
RegExp.prototype.multiline
==========================

Сводка
------

Свойство **`multiline`** указывает, использовался ли в определении регулярного выражения флаг `"m"`. Свойство `multiline` является свойством только для чтения и принадлежит экземпляру регулярного выражения.

| Атрибуты свойства `RegExp.prototype.multiline` |
| --- |
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |

Описание
--------

Значение свойства `multiline` имеет тип `Boolean` и содержит `true`, если при определении регулярного выражения использовался флаг `"m"`; в противном случае оно содержит `false`. Флаг `"m"` указывает на то, что многострочная входная строка должна рассматриваться в виде нескольких строк. Например, если используется флаг `"m"`, специальные символы `"^"` и `"$"` меняют своё поведение: с установленным флагом они сопоставляются в началом / концом каждой строки в многострочной строке, а не с началом / концом всей многострочной строки.

Вы не можете напрямую изменить это свойство.

Примеры
-------

### Пример: использование свойства `multiline`


```js
var regex = new RegExp("foo", "m");

console.log(regex.multiline); // true
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-regexp.prototype.multiline |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `RegExp.lastIndex`
* `RegExp.prototype.global`
* `RegExp.prototype.ignoreCase`
* `RegExp.prototype.source`
* `RegExp.prototype.sticky`