Для успешной работы с регулярными выражениями необходимо знать, что делает каждый специальный символ, флаг и метод. Это шпаргалка регулярных выражений, на которую вы можете ссылаться, пытаясь вспомнить, как работает метод, специальный символ или флаг.
Определение регулярного выражения в JavaScript
Существует два способа определения регулярного выражения в JavaScript.
-
var rgx = /^(\d+)/— Вы можете использовать литерал регулярного выражения и заключать шаблон между косыми чертами. Это оценивается во время компиляции и обеспечивает лучшую производительность, если регулярное выражение остается постоянным. -
var rgx = new RegExp('^(\d+)')— функция конструктора полезна, когда регулярное выражение может изменяться программно. Они компилируются во время выполнения.
Соответствие определенному набору символов
Следующие последовательности могут использоваться для соответствия определенному набору символов.
-
\w— Соответствует всем словам символов. Символы слова являются буквенно-цифровыми (символы az, AZ и подчеркивание). -
\W— соответствует несловесным символам. Все, кроме буквенно-цифровых символов и подчеркивания. -
\d— Соответствует цифрам. Любая цифра от 0 до 9. -
\D— Соответствует нецифровым символам. Все, кроме 0 до 9. -
\s— Соответствует пробельным символам. Это включает пробелы, табуляции и разрывы строк. -
\S— Соответствует всем другим символам, кроме пробелов. -
.— Соответствует любому символу, кроме разрывов строк. -
[AZ]— Соответствует символам в диапазоне. Например,[AE]будет соответствовать A, B, C, D и E. -
[ABC]— Соответствует символу в данном наборе. Например,[AMT]будет соответствовать только A, M и T. -
[^ABC]— Подбирает все символы, которых нет в данном наборе. Например,[^AE]будет соответствовать всем другим символам, кроме A, B, C, D и E.
Указание количества символов для сопоставления
Все вышеприведенные выражения будут соответствовать одному символу за раз. Вы можете добавить квантификаторы, чтобы указать, сколько символов должно быть включено в совпадение одновременно.
-
+— Соответствует одному или нескольким вхождениям предыдущего токена. Например,\w+вернет ABD12D как одно совпадение вместо шести разных совпадений. -
*— Соответствует нулю или более вхождений предыдущего токена. Например,b\w*соответствует жирным частям в b , bat , bajhdsf bfjhbe . По сути, он соответствует нулю или большему количеству слов после «b». -
{m, n}— соответствует не менее m и не более n вхождений предыдущего токена.{m,}будет соответствовать по крайней мере m вхождений, и нет верхнего предела для соответствия.{k}будет точно соответствовать k вхождений предыдущего токена. -
?— Соответствует нулю или одному вхождению предыдущего символа. Например, это может быть полезно при сопоставлении двух вариантов написания для одной и той же работы. Например,/behaviou?r/будет соответствовать поведению и поведению . -
|— Соответствует выражению до или после символа канала. Например,/se(a|e)/соответствует как видеть, так и море.
Регулярные выражения, связанные с круглыми скобками
-
(ABC)— это сгруппирует несколько токенов вместе и запомнит подстроку, подобранную ими для дальнейшего использования. Это называется группой захвата. -
(?:ABC)— это также сгруппирует несколько жетонов вместе, но не запомнит матч. Это группа без захвата. -
\d+(?=ABC)— будет соответствовать токену, предшествующему части(?=ABC)только если за ним следуетABC. ЧастьABCне будет включена в матч. Часть\d— это просто пример. Это может быть любая другая строка регулярного выражения. -
\d+(?!ABC)— будет соответствовать токену, предшествующему части(?!ABC)только если за ним не следуетABC. ЧастьABCне будет включена в матч. Часть\d— это просто пример. Это может быть любая другая строка регулярного выражения.
Другие символы регулярного выражения
Есть также некоторые другие символы регулярных выражений, которые не были рассмотрены в предыдущих разделах:
-
^— Ищите регулярное выражение в начале строки или в начале строки, если включен многострочный флаг. -
$— Ищите регулярное выражение в конце строки или в конце строки, если включен многострочный флаг. -
\b— Соответствовать предыдущему токену, только если есть граница слова. -
\B— Соответствовать предыдущему токену, только если нет границы слова.
Использование флагов с регулярными выражениями
Флаги могут использоваться для управления интерпретацией регулярного выражения. Вы можете использовать флаги отдельно или вместе в любом порядке. Это пять флагов, которые доступны в JavaScript.
-
g— Искать в строке все совпадения заданного выражения, а не возвращать только первое. -
i— Сделать поиск нечувствительным к регистру, чтобы такие слова, как Apple, aPPLe и apple, можно было сопоставлять одновременно. -
m— Этот флаг гарантирует, что токены^и$ищут совпадение в начале или конце каждой строки, а не всей строки. -
u— Этот флаг позволит вам использовать экранирование кодовой точки Unicode в вашем регулярном выражении. -
y— Это заставит JavaScript искать только совпадение в текущей позиции в целевой строке.
Вы можете указать флаги для регулярного выражения в JavaScript, либо добавив их в конец литерала регулярного выражения, либо передав их конструктору RegExp . Например, /cat/i сопоставляет все вхождения cat независимо от регистра, а RegExp("cat", 'i') делает то же самое.
Полезные методы регулярных выражений в JavaScript
Регулярные выражения, которые вы создаете, используя флаги и последовательности символов, которые мы обсуждали до сих пор, предназначены для использования с различными методами для поиска, замены или разбиения строки. Вот несколько методов, связанных с регулярными выражениями.
-
test()— Проверьте, содержит ли основная строка подстроку, которая соответствует шаблону, заданному данным регулярным выражением. Возвращаетtrueв случае успешного совпадения иfalseпротивном случае.
|
1
2
3
4
5
6
7
8
9
|
var textA = ‘I like APPles very much’;
var textB = ‘I like APPles’;
var regexOne = /apples$/i
// Output : false
console.log(regexOne.test(textA));
// Output : true
console.log(regexOne.test(textB));
|
В приведенном выше примере регулярное выражение должно искать слово яблок только в конце строки. Вот почему мы false в первом случае.
-
search()— Проверить, содержит ли основная строка подстроку, которая соответствует шаблону, заданному данным регулярным выражением. Возвращает индекс совпадения при успехе и -1 в противном случае.
|
1
2
3
4
5
6
7
8
9
|
var textA = ‘I like APPles very much’;
var regexOne = /apples/;
var regexTwo = /apples/i;
// Output : -1
console.log(textA.search(regexOne));
// Output : 7
console.log(textA.search(regexTwo));
|
В этом случае первое регулярное выражение вернуло -1, потому что не было точного совпадения с учетом регистра.
-
match()— Поиск, если основная строка содержит подстроку, которая соответствует шаблону, заданному данным регулярным выражением. Если флагgвключен, несколько совпадений будут возвращены в виде массива.
|
1
2
3
4
5
|
var textA = ‘All I see here are apples, APPles and apPleS’;
var regexOne = /apples/gi;
// Output : [ «apples», «APPles», «apPleS» ]
console.log(textA.match(regexOne));
|
-
exec()— Поиск, если основная строка содержит подстроку, которая соответствует шаблону, заданному данным регулярным выражением. Возвращенный массив будет содержать информацию о совпадении и группах захвата.
|
1
2
3
4
5
6
7
8
|
var textA = ‘Do you like apples?’;
var regexOne = /apples/;
// Output : apples
console.log(regexOne.exec(textA)[0]);
// Output : Do you like apples?
console.log(regexOne.exec(textA).input);
|
-
replace()— Найти подстроку, соответствующую заданному шаблону, и заменить ее предоставленной строкой замены.
|
1
2
3
4
5
|
var textA = ‘Do you like aPPles?’;
var regexOne = /apples/i
// Output : Do you like mangoes?
console.log(textA.replace(regexOne, ‘mangoes’));
|
-
split()— этот метод позволит вам разбить основную строку на подстроки на основе разделителя, заданного как регулярное выражение.
|
1
2
3
4
5
|
var textA = ‘This 593 string will be brok294en at places where d1gits are.’;
var regexOne = /\d+/g
// Output : [ «This «, » string will be brok», «en at places where d», «gits are.»
console.log(textA.split(regexOne))
|
Вывод
В предыдущих уроках я рассмотрел основы регулярных выражений, а также некоторые более сложные выражения, которые могут оказаться полезными время от времени. Эти два руководства объясняли, как разные символы или последовательности символов работают в регулярных выражениях.
-
Руководство для начинающих по регулярным выражениям в JavaScript
-
Регулярные выражения JavaScript: помимо основ
Если регулярные выражения все еще сбивают вас с толку, я советую продолжать практиковать и смотреть, как другие люди придумывают регулярные выражения для создания определенного шаблона.

