Автор оригинала: Dillion Megida.
Регулярные выражения (также называемые Regex или Regexp) являются мощным способом анализа текста. С регулярным выражением вы можете сопоставить строки в точках, которые соответствуют определенным символам (например, JavaScript) или шаблонами (например, Numbersingsymbol – 3A &).
.replace Метод используется на строках в JavaScript для замены частей строки символами. Это часто используется так:
const str = 'JavaScript';
const newStr = str.replace("ava", "-");
console.log(newStr);
// J-Script
Как вы можете видеть выше, способ замены принимает два аргумента: строка, которая должна быть заменена, и то, на что строка будет заменена.
Вот где Regex приходит в.
Использование .replace Выше ограничено: известны символы, которые нужно заменить – «ava». Что делать, если мы вместо этого обеспокоены рисунком? Может быть, номер, два буквы, а слово «Foo» или три символа, используемые вместе?
.replace Метод используется с Regex может достичь этого. Regex может быть эффективно используется для воссоздания шаблонов. Так сочетать это с .replace Значит, мы можем заменить шаблоны и не только точные символы.
Как использовать Regex с .replace в JavaScript
Использовать Regex, первый аргумент заменить будет заменен на синтаксис Regex, например /Regex/ Отказ Этот синтаксис служит шаблоном, где любые части строки, которые совпадают, будут заменены новой подстрокой.
Вот пример:
// matches a number, some characters and another number const reg = /\d.*\d/ const str = "Java3foobar4Script" const newStr = str.replace(reg, "-"); console.log(newStr); // "Java-Script"
Строка 3fooobar4 соответствует Regex /\\.*\// Так что это заменяется.
Что если мы хотели выполнить замену в нескольких местах?
Regex уже предлагает это с G (глобальный) флаг и то же самое можно использовать с заменить Отказ Вот как:
const reg = /\d{3}/g
const str = "Java323Scr995ip4894545t";
const newStr = str.replace(reg, "");
console.log(newStr);
// JavaScrip5t
// 5 didn't pass the test :(
Regeex соответствует частям строки, имеющих ровно 3 последовательных числа. 323 соответствует этому, 995 соответствует этому, 489 соответствует этому, а 454 соответствует этому. Но последний 5 не соответствует шаблону.
Результат в том, что Javascrip5t Показывает, как шаблоны правильно сопоставляются и заменяет новую подстроку (пустой строкой).
Флаг корпуса – Я также можно использовать. Это означает, что вы можете заменить шаблоны нечувствительности к регистру. Вот как это используется:
const reg1 = /\dA/ const reg2 = /\dA/i const str = "Jav5ascript" const newStr1 = str.replace(reg1, "--"); const newStr2 = str.replace(reg2, "--"); console.log(newStr1) // Jav5ascript console.log(newStr2) // Jav--script
..5a .. Не соответствует первому синтаксису, потому что Regeex по умолчанию чувствителен к регистру. Но с использованием Я Флаг, как видно во втором синтаксисе, строка как ожидается – заменена.
Как использовать разделение с регулярными выражениями
Сплит также использует Regex Отказ Это означает, что вы можете разделить строку не только на подсусах, которые соответствуют точным символам, но и шаблонам.
Вот быстрый взгляд:
const regex = /\d{2}a/;
const str = "Hello54 How 64aare you";
console.log(str.split(regex))
// ["Hello54 How ", "are you"]
Строка была Сплит на 64a Потому что эта подстрока соответствует указанному Regex.
Обратите внимание, что Глобальный флаг – G – в Сплит не имеет значения, в отличие от Я Флаг и другие флаги. Это потому, что Сплит Разбивает строку на нескольких точках матчей Regex.
Обертывание
Regex делает заменить Строки в JavaScript более эффективные, мощные и веселые.
Вы не только ограничены точными персонажами, а схемами и несколькими заменами. В этой статье мы видели, как они работают вместе, используя несколько примеров.
Ура для регулярного выражения?