Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Метасимволы. Регулярные выражения
Как мы уже видели в приведенных ранее примерах, в регулярных выражениях присутствуют специальные символы, так называемые метасимволы. Они не всегда соответствуют отдельным символам строки, а управляют тем, как производится проверка строк.
Перечислим метасимволы, применяемые в регулярных выражениях:
^
— привязка к началу строки. Если указан модификаторm
, то соответствует началу каждой подстроки;$
— привязка к концу строки. Если указан модификаторm
, то соответствует концу каждой подстроки;[]
— позволяет указать символы, которые могут встречаться на этом месте в строке. Можно перечислять символы подряд или указать диапазон через тире;[^]
— позволяет указать символы, которые не могут встречаться на этом месте в строке. Можно перечислять символы подряд или указать диапазон через тире;n|m
— соответствует одному из фрагментовn
илиm
:
let p = /красн((ая)|(ое))/g;
let str = 'красная или красное, но не красный';
console.log( str.match(p) );
// [ 'красная', 'красное' ]
.
(точка) — любой символ, кроме символа перевода строки (\n
). Если указан модификаторs
, то точка соответствует любом символу, включая символ перевода строки. Внутри квадратных скобок точка не имеет специального значения:
let p = /.+/g;
let str = '10\n20';
console.log( str.match(p) ); // [ '10', '20' ]
p = /.+/gs;
console.log( str.match(p) ); // [ '10\n20' ]
p = /[.]+/gs;
console.log( str.match(p) ); // null
Если нужно найти соответствие любому символу, включая символ перевода строки, то можно воспользоваться следующим кодом: [\s\S]
. Класс \s
означает любой пробельный символ, а класс \S
— любой не пробельный символ. Пример:
let p = /.+/g;
let str = '10\n20';
console.log( str.match(p) ); // [ '10', '20' ]
p = /[\s\S]+/g;
console.log( str.match(p) ); // [ '10\n20' ]
Привязку к началу и концу строки следует использовать, если строка должна полностью соответствовать регулярному выражению. Например, проверим, содержит ли строка только число:
let p = /^[0-9]+$/; // Строка может содержать только числа
if ( p.test('2') ) console.log('Число'); // Выведет: Число
else console.log('Не число');
if ( p.test('Строка2') ) console.log('Число');
else console.log('Не число'); // Выведет: Не число
Не указав привязку к началу и концу, мы получим соответствие шаблону любого числа внутри строки:
let p = /[0-9]+/;
if ( p.test('Строка2') )
console.log('Есть число'); // Выведет: Есть число
else console.log('Нет числа');
Можно указать привязку только к началу или только к концу строки:
let p = /[0-9]+$/;
if ( p.test('Строка2') ) console.log('Есть число в конце строки');
else console.log('Нет числа в конце строки');
// Выведет: Есть число в конце строки
p = /^[0-9]+/;
if ( p.test('Строка2') ) console.log('Есть число в начале строки');
else console.log('Нет числа в начале строки');
// Выведет: Нет числа в начале строки
В квадратных скобках []
можно указать символы, которые могут встречаться на этом месте в строке. Можно перечислять символы подряд или указать диапазон через тире:
[09]
— соответствует цифре0
или9
;[0-9]
— соответствует любой цифре от0
до9
;[абв]
— соответствует буквама
,б
ив
;[а-г]
— соответствует буквама
,б
,в
иг
;[а-яё]
— соответствует любой букве ота
доя
;[АБВ]
— соответствует буквамА
,Б
иВ
. Обратите внимание, если не указан модификаторi
, регистр будет иметь значение;[А-ЯЁ]
— соответствует любой букве отА
доЯ
;[а-яА-ЯёЁ]
— соответствует любой русской букве в любом регистре;[0-9а-яА-ЯёЁa-zA-Z]
— любая цифра и любая русская или латинская буква независимо от регистра.
ё
не входит в диапазон [а-я]
.Значение можно инвертировать, если после первой скобки указать символ ^
. Таким образом можно указать символы, которых не должно быть на этом месте в строке:
[^09]
— не цифра0
или9
;[^0-9]
— не цифра от0
до9
;[^а-яА-ЯёЁa-zA-Z]
— не русская или латинская буква в любом регистре.
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов