ECMAScript | Непустые диапазоны классов без тире (NonemptyClassRangesNoDash) | Регулярные выражения (Regular Expression)

ECMAScript | Непустые диапазоны классов без тире (NonemptyClassRangesNoDash) | Регулярные выражения (Regular Expression)

 

Производство NonemptyClassRangesNoDash :: ClassAtom оценивается следующим образом:

1. Верните набор символов CharSet, который является результатом оценки ClassAtom.

Производство NonemptyClassRangesNoDash :: ClassAtomNoDash NonemptyClassRangesNoDash оценивается следующим образом:

1. Оцените ClassAtomNoDash, чтобы получить CharSet A.
2. Оцените NonemptyClassRangesNoDash, чтобы получить CharSet B.
3. Верните объединение CharSets A и B.

Производство NonemptyClassRangesNoDash :: ClassAtomNoDash ClassAtom ClassRanges оценивается следующим образом:

1. Оцените ClassAtomNoDash, чтобы получить CharSet A.
2. Оцените ClassAtom, чтобы получить CharSet B.
3. Оцените ClassRanges, чтобы получить CharSet C.
4. Пусть D будет! CharacterRange(A, B).
5. Верните объединение D и C.

 

Примечание 1

ClassRanges может расширяться до одного ClassAtom и/или диапазонов из двух ClassAtom, разделенных тире. В последнем случае ClassRanges включает все символы между первым ClassAtom и вторым ClassAtom включительно; ошибка возникает, если либо ClassAtom не представляет один символ (например, если он равен \w), либо если значение символа первого ClassAtom больше, чем значение символа второго ClassAtom.

 

Примечание 2

Даже если Шаблон игнорирует регистр, регистр двух концов диапазона важен для определения того, какие символы принадлежат диапазону. Так, например, шаблон /[E-F]/i соответствует только буквам E, F, e и f, а шаблон /[E-f]/i соответствует всем буквам верхнего и нижнего регистра в блоке Unicode Basic Latin как а также символы [, \, ], ^, _ и `.

 

Примечание 3

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

 

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

Предыдущий раздел — Непустые Диапазоны Классов

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

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