базовый курс

ГРУППА КУРСА

Классы

Класс - это часть паттерна, которая представляет собой набор символов. Чтобы строка совпала с паттерном, в ней должен быть любой из этих символов. Чтобы написать класс, нужно перечислить нужные символы в квадратных скобках. Для примера найдём слово "шапка" в разных падежах:

+
1
2
3
4
5
6
7
8
<!DOCTYPE html>
<html>
<head>
<title>Страница</title>
<meta charset="utf-8">
</head>
<body>
<script>
9
10
11
var str='Иван в шапке, а Анна без шапки';
var reg = /шапк[еи]/g;
document.write(str.match(reg));

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

Весь класс соответствует только одному символу. Он не ищет строку, находящуюся в квадратных скобках. Пример:

12
13
14
str = 'Восток';
reg = /о[ст]о/;
document.write('<br>'+str.match(reg));

Может показаться, что паттерн должен найти совпадение. Ведь в слове "восток" есть такое сочетание: буква "о", потом "ст", потом опять "о". Но данный паттерн ищет другое сочетание: буква "о", затем [либо "с" либо "т"], затем опять "о". В слове "восток" такого сочетания нет.

паттерн

В классе можно указать диапазон символов. Тогда будет найден один символ из диапазона.

15
reg = /шапк[а-я]/g;

Такое регулярное выражение найдёт слова "шапка", "шапки", "шапке", "шапку" и другие подобные слова.

Диапазон может составлять не весь класс, а только его часть. Остальные части просто перечисляют без пробелов внутри квадратных скобок.

[5а-я]

Такой класс найдёт либо число "5" либо букву от "а" до "я". Внутри класса можно перечислить несколько символов и несколько диапазонов.

Важно: В стандарте Unicode буква "ё" находится за пределами диапазона а-я. Чтобы класс нашёл любую букву русского алфавита, его нужно писать так:

[ёа-я]

Чтобы класс находил указанный символ независимо от регистра, можно поставить флаг i в регулярном выражении. Но он будет относиться ко всему выражению, а не только к классу. Если нужно, чтобы в остальной части ругулярного выражения различались заглавные и прописные буквы, то не нужно ставить флаг, а в классе указать диапазоны заглавных и прописных символов.

Для самых распространённых классов существуют специальные символы. Можно не писать класс, а поставить его символ. В следующе таблице приведены символы классов:

Символ Описание
\w Латинская буква, либо цифра, либо знак "_". Русские буквы этому классу не соответствуют
\d Любая цифра
\s Пробельный символ. Это не только пробел, но и перенос строки, табуляция, возврат коретки и другие
\b Граница слова
.(точка) Любой символ, кроме переноса строки. Но не отсутствие символа. Какой-то символ должен быть
\W Любой символ, не соответствующий \w. То есть не латинтская буква, не цифра и не "_"
\D Не цифра
\S Не пробельный символ
\B Не граница слова

Подробнее о классе \b. Он определяет границу слова. Он находит то, что идёт перед или после слова. Это может быть что угодно: начало и конец строки, пробел, знак препинания. Но оно должно граничить со словом. Слова состоят из симмолов, соответствующих \w. Особенность класса \b состоит в том, что он не добавляет в найденную подстроку символ, определяющий границу слова. Например, если после слова идёт запятая, то в подстроту попадёт только само слово без запятой. Найти границы русских слов не получится, потому что русские буквы не являются символами, из которых формирутся слова в регулярных выражениях.

Найдём в тексте указание версий CSS:

16
17
18
str = 'Раньше использовался CSS2, а сейчас CSS3';
reg = /CSS\d/g;
document.write('<br>'+str.match(reg));