Часто наше впечатление от регулярных выражений состоит в том, что их трудно выучить и запомнить, мы учимся и забываем, забываем и снова учимся, но всегда чувствуем, что не можем вспомнить.
Что такое регулярное выражение?
Регулярные выражения используют один символ для описания и сопоставления ряда синтаксисов.правилоНить.
Цель использования регулярных выражений --заменятьРабота. Сначала определите правило самостоятельно, а затем перейдите к строке, чтобы сопоставить подстроку, соответствующую правилу.
Чтобы лучше понять регулярные выражения, мы можем использовать визуальные инструменты, онлайн-адрес:
Регулярное выражение:regexper.com
Регулекс:Это отвратительно. IM/Heat solid down/#! Post…
Отладчик:www.debuggex.com/
Сначала изучите синтаксис регулярных выражений:
1. Объект регулярного выражения
js поддерживает регулярные выражения через встроенный объект RegExp.Существует 2 способа создания объектов RegExp: литерал б) конструктор
а. Буквальный
var reg = /\bare\b/g;
Как сделать полнотекстовое сопоставление? ☞“g"
б. Конструктор
var reg = new RegExp('\\bare\\b','g');
Первый параметр: строка ☞Текст регулярного выражения, "\" в js сам по себе является специальным символом, если вы хотите его использовать, вам нужно экранировать;
Второй параметр: строка ☞ идентификация.
Полное совпадение текста --> "g":
модификатор
g: глобальный -- полнотекстовый поиск, не добавлять, искать до первого совпадения;
i: игнорировать регистр — игнорировать регистр, регистр по умолчанию чувствителен к регистру;
m: несколько строк — многострочный поиск.
Найдено: слова с заглавной буквы не заменяются, если вы хотите игнорировать регистр, вы можете сопоставить ☞"i" независимо от регистра.
2. Мета-персонажи
Регулярные выражения состоят из 2 основных типов символов: 1. Буквенные текстовые символы, 2. Метасимволы.
Метасимволы — это неалфавитные символы, которые имеют особое значение в регулярных выражениях.
* + ? $ ^ . | \ () {} []
3, классы персонажей
Как правило, один символ регулярного выражения соответствует одному символу строки. Иногда вы хотите сопоставить определенный тип характера (то есть определенного типа символа, который соответствует серии характеристик), как с этим бороться?
☞ Мы можем использовать метасимвол [] для создания простого класса;
☞так называемый класс относится к объектам, отвечающим определенным признакам, что носит общий характер, а не конкретный признак;
☞Выражение [abc] относит символы a, b или c к классу, и выражение может соответствовать таким символам.
отрицание класса символов
а. Используйте метасимволы^СоздайтеОбратный класс / Отрицательный класс
б. Обратный класс относится к контенту, который не принадлежит к классу
C. Выражение [^abc] представляет содержимое, которое не является символом a, b или c.
4. Класс области
Используйте класс символов для сопоставления чисел [0123456789]
быть пригодным для использования[a-z]Чтобы соединить 2 персонажа,любой символ от а до я(Это замкнутый интервал, т.е. содержит сами a и z).
Внутри класса, состоящего из [], можно непрерывно писать [a-zA-Z]
В: "-" не является ни специальным символом, ни метасимволом, что мне делать, если я хочу иногда сопоставлять "-" в классе?
Помните: «-» стоит посередине, т. е. начало, конец синтаксиса, указывающий на диапазон.
Это будет соответствовать «-».
5, предопределенные классы
соответствовать одномуab + цифровой + любой символНить
Регулярные выражения также предоставляют несколько часто используемыхграницасопоставитель
Открытие: Там, где есть «есть», оно заменено.
Просто хочу заменить слово "есть", слова имеют границы слова.
Если вы хотите заменить только в «Это», обратите внимание и обнаружите, что передняя часть не является границей, а задняя — границей, поэтому есть
Уведомление:Значение метасимволов не уникально, оно имеет разное значение в разных сценариях, значение не в [] не меняется на противоположное, а означает «начиная с хх».
".@"☞"Любой символ+@" для соответствия
"@."☞"@+любой символ" для соответствия
".@$" ☞ "Хочется заканчиваться только @" для соответствия
6. Квантификаторы
Мы хотим сопоставить строку, которая непрерывна N раз, например, "\D\D\D\D\D\D\D\D\D...", чтобы решить такие проблемы, регулярное выражение вводит понятие квантор.
7. Жадный режим и нежадный режим регулярных выражений
а. Жадный режим
Регулярное выражение будет соответствоватьсоответствовать как можно большему количеству, пока совпадение не завершится, по умолчанию используется жадный режим.
б. Нежадный режим
сделать регулярное выражениесовпадать как можно меньше, то есть, как только совпадение будет успешным, оно не будет продолжаться вниз, это нежадный режим. ☞ВДобавить после квантификатора?Вот и все.
8. Группировка
Сопоставьте сцену, в которой строка javascript появляется 3 раза подряд, если вы пишете javascript{3} следующим образом:
Квантификатор может относиться только к следующей за ним букве, а не ко всему слову. использовать( )Функциональная группировка может быть достигнута, так что квантификаторы пакетов.
(Javascript) {3} следующим образом
использовать|доступныйилиЭффект:
обратная ссылка
2017-11-10 =>11/10/2017
Замененный контент больше не является постоянным, а переменной. Что я должен сделать в это время? ☞ «$» группируют содержание класса.
Используйте «$1» и т. д. для представления захваченных пакетов, также известных как захват пакетов.
Воспользуйтесь преимуществами группировки, но не хотите ее захватывать, как? ☞ Игнорировать группировку
Если вы не хотите захватывать некоторые группы, вам просто нужно добавить ?: к группе.
9. Предвидение
Регулярные выражения начинают синтаксический анализ от начала текста к хвосту, направление хвоста текста называется «спереди», а начало текста называется «назад».
Упреждающий просмотр — это когда регулярное выражение соответствует правилу, оно проверяет вперед, выполняется ли утверждение, и направление обратного просмотра/обратного просмотра меняется на противоположное.
js не поддерживает просмотр вперед.
соответствие определенному утверждению называетсяположительный / положительныйсовпадение; несоответствие определенному утверждению называетсяОтрицательный / отрицательныйсоответствовать.
10. свойства js-объекта
global: искать ли полный текст, по умолчанию false.
игнорировать регистр: независимо от того, чувствителен он к регистру или нет, значение по умолчанию — false.
multiline: многострочный поиск, по умолчанию false.
lastIndex: следующая позиция последнего символа текущего совпадения выражения.
источник: текстовая строка регулярного выражения.
var reg1 = /\w/;
var reg2 = /\w/gim;
RegExp.prototype.test(str)☞ Используется для проверки наличия строки, соответствующей шаблону регулярного выражения в строковом параметре. Возвращает true, если существует, в противном случае возвращает false.
var reg1 = /\w/;
var reg2 = /\w/g;
Причина: затронут lastIndex.
var reg1 = /\w/;
var reg2 = /\w/g;
while(reg2.test('ab')){
console.log(reg2.lastIndex);
}