AJAX загрузка
home

С помощью регулярных выражений Вы можете производить поиск слов в текстах.

Регулярные выражения

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

Синтаксис:

//Первый вариант создания регулярного выражения
var regexp=new RegExp(шаблон,модификаторы);
//Второй вариант создания регулярного выражения
var regexp=/шаблон/модификаторы;

шаблон позволяет задать шаблон символов для поиска.

модификаторы позволяют настроить поведение поиска:

  • i - поиск без учета регистра букв;
  • g - глобальный поиск (будут найдены все совпадения в документе, а не только первое);
  • m - многострочный поиск.

Поиск слов и выражений

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

Приведем пример использования поиска с применением модификаторов:

//Зададим регулярное выражение rv1
rv1=/Россия/;
//Зададим регулярное выражение rv2
rv2=/Россия/g;
//Зададим регулярное выражение rv3
rv3=/Россия/ig;

//Жирным шрифтом выделено, где в тексте будут найдены совпадения при использовании 
//выражения rv1:

Россия является крупнейшим государством мира. Россия граничит с 18 странами.
РОССИЯ является государством-продолжателем СССР.

//Жирным шрифтом выделено, где в тексте будут найдены совпадения при использовании 
//выражения rv2:

Россия является крупнейшим государством мира. Россия граничит с 18 странами.
РОССИЯ является государством-продолжателем СССР.";

//Жирным шрифтом выделено, где в тексте будут найдены совпадения при использовании 
//выражения rv3:

Россия является крупнейшим государством мира. Россия граничит с 18 странами.
РОССИЯ является государством - продолжателем СССР.";

Специальные символы

Помимо обычных символов в шаблонах регулярных выражений могут использоваться специальные символы (метасимволы). Специальные символы с описаниями приведены в таблице ниже:

Специальный символ Описание
. Совпадает с любым символом, кроме символа конца строки.
\w Совпадает с любым буквенным символом.
\W Совпадает с любым не буквенным символом.
\d Совпадает с символами, которые являются цифрами.
\D Совпадает с символами, которые не являются цифрами.
\s Совпадает с пробельными символами.
\S Совпадает с не пробельными символами.
\b Совпадения будут искаться только на границах слов (в начале или конце).
\B Совпадения будут искаться только не на границах слов.
\n Совпадает с символом перевода строки.

Пример

/* Выражение reg1 найдет все слова начинающиеся на две произвольные буквы и 
заканчивающиеся на 'вет'. Так как слова в предложении разделяются пробелом, то 
в начале и в конце добавим спецсимвол \s) */
reg1=/\s..вет\s/g;
txt=' привет завет вельвет клозет ';
document.write(txt.match(reg1) + '<br />');
/* Выражение reg2 найдет все слова начинающиеся на три произвольные буквы и 
заканчивающиеся на 'вет' */
reg2=/\s...вет\s/g;
document.write(txt.match(reg2) + '<br />');
txt1=' при2вет привет при1вет ';
/* Выражение reg3 найдет все слова, которые начинаются на 'при' в которых потом 
следует 1 цифра и заканчиваются на 'вет' */
var reg3=/при\dвет/g;
document.write(txt1.match(reg3) + '<br />');
// Выражение reg4 найдет все цифры в тексте
var reg4=/\d/g;
txt2='5 лет учебы, 3 года плавания, 9 лет стрельбы.'
document.write(txt2.match(reg4) + '<br />');
Быстрый просмотр

Символы в квадратных скобках

Используя квадратные скобки [кейу] Вы можете указать группу символов, поиск которых нужно произвести.

Символ ^ перед группой символов в квадратных скобках [^квг] говорит о том, что нужно произвести поиск всех символов алфавита кроме заданных.

Используя тире (-) между символами в квадратных скобках [а-з] Вы можете задать диапазон символов, поиск которых нужно произвести.

С помощью квадратных скобок [012] Вы можете также искать числа.

Пример

//Зададим регулярное выражение reg1
reg1=/\sко[тдм]\s/g;
//Зададим строку текста txt1
txt1=' кот коса код комод ком ковер ';
//Произведем с помощью регулярного выражения reg1 поиск по строке txt1
document.write(txt1.match(reg1) + '<br />');
reg2=/\sсло[^тг]/g;
txt2=" слот слон слог ";
document.write(txt2.match(reg2) + '<br />');
reg3=/[0-9]/g;
txt3="5 лет учебы, 3 года плавания, 9 лет стрельбы";
document.write(txt3.match(reg3));
Быстрый просмотр

Квантификаторы

Квантификатор - это конструкция позволяющая задать сколько раз предшествующий ей символ или группа символов должна встречаться в совпадение.

Синтаксис:

//Предшествующий символ должен встречаться x - раз
{x}
//Предшествующий символ должен встречаться от x до у раз включительно
{x,y}
//Предшествующий символ должен встречаться не менее x раз
{x,}
//Указывает, что предшествующий символ должен встречаться 0 или более раз
*
//Указывает что предшествующий символ должен встречаться 1 или более раз 
+
//Указывает что предшествующий символ должен встречаться 0 или 1 раз 
?

//Зададим регулярное выражение rv1
rv1=/ко{5}шка/g
//Зададим регулярное выражение rv2
rv2=/ко{3,}шка/g
//Зададим регулярное выражение rv3
rv3=/ко+шка/g
//Зададим регулярное выражение rv4
rv4=/ко?шка/g
//Зададим регулярное выражение rv5
rv5=/ко*шка/g

//Жирным шрифтом показано, где в тексте будут найдены совпадения при использовании 
//выражения rv1:

кшка кошка коошка кооошка коооошка кооооошка коооооошка кооооооошка

//Жирным шрифтом показано, где в тексте будут найдены совпадения при использовании 
//выражения rv2:

кшка кошка коошка кооошка коооошка кооооошка коооооошка кооооооошка

//Жирным шрифтом показано, где в тексте будут найдены совпадения при использовании 
//выражения rv3:

кшка кошка коошка кооошка коооошка кооооошка коооооошка кооооооошка

//Жирным шрифтом показано, где в тексте будут найдены совпадения при использовании 
//выражения rv4:

кшка кошка коошка кооошка коооошка кооооошка коооооошка кооооооошка

//Жирным шрифтом показано, где в тексте будут найдены совпадения при использовании 
//выражения rv5:

кшка кошка коошка кооошка коооошка кооооошка коооооошка кооооооошка

Обратите внимание: если Вы хотите использовать какой-либо специальный символ (такой как . [] * + ? или {}) как обычный Вы должны поставить перед ним \.

Использование круглых скобок

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

К примеру регулярное выражение /(Дмитрий)\sВасильев/ найдет строку 'Дмитрий Васильев' и запомнит подстроку 'Дмитрий'.

В примере ниже мы используем метод replace(), чтобы изменить порядок слов в тексте. Для обращения к сохраненным совпадениям мы используем $1 и $2.

Пример

var regexp = /(Дмитрий)\s(Васильев)/;
var text = 'Дмитрий Васильев';
var newtext = text.replace(regexp, '$2 $1');
document.write(newtext);
Быстрый просмотр

Круглые скобки могут использоваться для группировки символов перед квантификаторами.

Пример

txt='хохохо хахаха хихихи';
regex1=/(ха){3}/g;
document.write(txt.match(regex1));
Быстрый просмотр

Круглые скобки также используются для поиска альтернатив.

Пример

txt=" яблоко, банан, картошка, груша, перец ";
regex1=/(яблоко|банан|груша)/ig;
document.write(txt.match(regex1));
Быстрый просмотр

Методы

С помощью метода exec() Вы можете производить поиск желаемого значения. Метод возвращает найденное значение.

Пример

//Зададим регулярное выражение rv1
rv1=/ко{5}шка/g
//Зададим строку текста, в котором будем искать совпадения
txt='кшка кошка коошка кооошка коооошка кооооошка коооооошка кооооооошка';
document.write(rv1.exec(txt));
Быстрый просмотр

С помощью метода test() Вы можете проверить содержится ли в тексте выражение заданное в регулярном выражении. Если выражение содержится в тексте метод возвращает true, а если нет false.

Пример

//Зададим регулярное выражение rv1
rv1=/ко{5}шка/g
//Зададим строку текста, в котором будем искать совпадения
txt='кшка кошка коошка кооошка коооошка кооооошка коооооошка кооооооошка';
//Произведем поиск по шаблону rv1 в строке текста txt
document.write(rv1.test(txt) + '<br />');
//Зададим регулярное выражение rv2
rv2=/тигр/g;
//Произведем поиск по шаблону rv2 в строке текста txt
document.write(rv2.test(txt));
Быстрый просмотр

Обратите внимание: полный список свойств и методов данного объекта Вы можете найти в нашем JavaScript справочнике.

Сделайте сами

Задание 1. Создайте регулярное выражение способное найти в тексте слова выделенные жирным шрифтом (подробности в редакторе):

Задание 1

regex1=/Задайте регулярное выражение здесь/;
document.write('<b>'+txt.match(regex1)+'</b>');