Регулярное выражение это последовательность символов, которые формируют шаблон поиска.
Когда вам нужно что-то найти в каком-то тексте, то для описания того, что вы ищите, и используется шаблон поиска.
В качестве регулярного выражения может использоваться как один символ, так и более сложный шаблон.
Регулярные выражения могут использоваться для выполнения всех видов операций текстового поиска и замены.
Синтаксис:
/шаблон/модификаторы;
Пример:
var patt = /msiter/i;
Объяснение примера:
- /msiter/i — регулярное выражение.
- msiter – шаблон, используемый в операции поиска.
- i — модификатор (определяет, что поиск должен быть регистронезависимым).
Использование методов строки
В JavaScript регулярные выражения часто используют в двух методах строки: search() и replace().
Метод search() использует выражение для поиска совпадения и возвращает позицию найденного совпадения.
Метод replace() возвращает измененную строку, где произведена замена шаблона.
Метод search() с регулярным выражением
В следующем примере для регистронезависимого поиска используется регулярное выражение:
var str = "Посетите сайт MSiter";
var n = str.search(/msiter/i);
В результате в переменную n будет возвращено 14.
Метод search() со строкой
Метод search() в качестве параметра также может принимать строку. При этом строковый параметр преобразуется в регулярное выражение:
В следующем примере для поиска используется строка "MSiter":
var str = "Посетите сайт MSiter!";
var n = str.search("MSiter");
Метод replace() с регулярным выражением
В следующем примере, чтобы заменить подстроку "Microsoft" на "Msiter" без учета регистра, используется регулярное выражение:
var str = "Посетите сайт Microsoft!";
var res = str.replace(/microsoft/i, "MSiter");
В результате в переменной res будет строка "Посетите сайт MSiter!".
Метод replace() со строкой
Метод replace() в качестве параметра также может принимать строку:
var str = "Посетите сайт Microsoft!";
var res = str.replace("Microsoft", "MSiter");
А вы заметили, что
- В описанных методах в качестве параметров можно использовать регулярные выражения (вместо строки).
- Регулярные выражения предоставляют значительно больший контроль над процессом поиска (например, можно производить поиск без учета регистра букв).
Модификаторы регулярного выражения
Модификаторы позволяют расширить область поиска:
Модификатор | Описание |
---|---|
i | Поиск без учета регистра букв |
g | Глобальный поиск (поиск всех совпадений, а не останавливаться после первого найденного) |
m | Многострочный поиск |
Шаблоны регулярных выражений
Квадратные скобки используются для поиска в диапазоне символов:
Выражение | Описание |
---|---|
[abc] | Найти любой из символов в квадратных скобках |
[0-9] | Найти любую из цифр в квадратных скобках |
(x|y) | Поиск альтернативы — один ИЛИ (|) другой вариант |
Метасимволы — это символы со специальным значением:
Метасимвол | Описание |
---|---|
\d | Найти число |
\s | Найти пробельный символ |
\b | Найти совпадение в начале или в конце слова |
\uxxxx | Найти символ в кодировке Юникод, заданный шестнадцатеричным числом xxxx |
Квантификаторы определяют количество повторений:
Квантификатор | Описание |
---|---|
n+ | Искать один или более символ n |
n* | Искать ноль или более символов n |
n? | Искать ноль или один символ n |
Объект RegExp
В JavaScript объект RegExp — это объект регулярного выражения с предопределенными свойствами и методами.
Метод test()
Метод test() объекта RegExp используется для поиска шаблона в заданной строке. В зависимости от результата он возвращает true или false.
В следующем примере в строке ищется символ "e":
var patt = /e/;
patt.test("The best things in life are free!");
Так как в этом примере строка содержит символ "e", результат будет true.
Для работы с объектом RegExp не обязательно сначала помещать регулярное выражение в переменную. Две строчки кода предыдущего примера можно сократить до одной:
/e/.test("The best things in life are free!");
Метод exec()
Метод exec() объекта RegExp используется для поиска шаблона в заданной строке. Он возвращает найденный текст. Если ничего не было найдено, то возвращается null.
В следующем примере в строке ищется символ "e":
/e/.exec("The best things in life are free!");
Так как в этом примере строка содержит символ "e", результат будет - e.