Регулярные выражения
Предназначены для описания шаблонов, с помощью которых можно осуществлять поиск совпадений в строках.
Регулярное выражение создается при помощи косых черт внутри которых описывается шаблон для поиска /1456/ или при помощи конструктора: new RegExp(/11456/) . Метод test принимает аргумент в виде строки, в которой осуществляется поиск на основе шаблона и возвращает true при совпадении или false при отсутствии совпадения.
//
Поиск значения в строке равного значению шаблона:
/145/.test("11456") //true
[]
Поиск любого совпадения символов в строке с любым символом шаблона осуществляется добавлением искомых символов в квадратные скобки []:
/[мир]/.test("рим") //true
/[мир]/.test("и") //true
Символы в квадратных скобках соответствуют одному символу.
[0-9]
Можно указывать диапазоны символов, например чисел 0-9:
/[0-9]/.test("Арзамас-16") //true
/[0-9]/ - будет искать символ в строке равный одному из символов: 0123456789.
Так же доступны следующие диапазоны:
[A-Z]
[a-z]
[А-Я]
[а-я]
\d
Символы обозначающие диапазоны:
\d - любая цифра;
\w - любой алфавитно-цифровой символ;
\s - любой пробельный символ;
\D - символ, который не является цифрой;
\W - не алфавитно-цифровой символ;
\S - не пробельный символ;
, - любой символ, кроме новой строки.
^
Искать любой символ, кроме символов перед которыми стоит ^:
/[^0-9]/.test("0123456789") //false - не найдены символы кроме цифры
/[^0-9]/.test("Арзамас-16"") //true - найдены символы кроме цифры
Если указать перед квадратными скобками символ ^ то сопоставление шаблона происходит только с первым символом строки:
/^[^5-9]/.test("8zzzzzz")
//false - на месте первого символа не найдены символы кроме цифр
/^[^5-9]/.test("z8zzzzz")
//true - на месте первого символа найдены символы кроме цифр
+
Искать необязательный повторяющийся символ можно установив + после символа который предположительно может повторяться:
/\d+/.test("0123456789") //true - ищет одну и более цифру
*
Ищет необязательно повторяющиеся символы при этом сам символ так же необязателен:
/\d*/.test("") //true - ищет одну и более цифру
?
Необязательный символ обозначается ?:
/10?/.test("10") //true
/10?/.test("1") //true
/10?1/.test("1") //false
{}
Фигурные скобки могут указывать количество допустимых символов:
{4} - точно 4 символа
{2-3} - от 2 до 3 симвлов
{,3} - до 3 символов
{3,} - от 3 символов
/\d{2}-\d{2}-\d{2}/.test("44-44-44") //true
/\d{2}-\d{2}-\d{2}/.test("444-44-44") //true поскольку
^$
/\d{2}-\d{2}-\d{2}/.test("444-44-44")
true поскольку шаблон сместится вправо на одну цифру и обнаружит совпадение.
Для точного совпадения используются символы обозначающие начало ^ и конец $ строки:
/^\d{2}-\d{2}-\d{2}$/.test("444-44-44") //false
()
Группирует символы, что позволяет применять другие операторы к группе, путем его установления после закрывающей скобки:
/slow(ly)?/.test("slow")
|
Играет роль ИЛИ, может применяться в круглых скобках:
/(one|two|three)/.test("two") //true
exec
Метод регулярного выражения который возвращает null в случае отсутствия совпадения или объект с информацией о совпадении:
/(one|two|three)/.exec("one test")
Полученная информация:
0: "one"
1: "one"
groups: undefined
index: 0
input: "one test"
length: 2
0: "one" совпадение шаблона.
1: "one" если в шаблоне есть значения в () начинает искать эти значения в найденном 0: "one" и добавляет совпадение с следующим номером индекса.
index: 0 начальный индекс строки с которого начинается найденное совпадение.
/one (two) (three)/.exec("one two three")
Полученная информация:
0: "one two three"
1: "two"
2: "three"
groups: undefined
index: 0
input: "one two three"
length: 3
match
Возвращает null или объект с информацией о найденном совпадении. Вызывается в качестве метода строкового объекта, в качестве аргумента принимает шаблон регулярного выражения:
"one test".match(/(one|two|three)/)
Полученная информация:
0: "one"
1: "one"
groups: undefined
index: 0
input: "one test"
length: 2