Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 90 из 114 · 9 мин
RegExp и литерал, test, exec и lastIndex, классы символов, квантификаторы, якоря, source и toString.
Телефоны приходят как «+7 (999) 123-45-67», «89991234567», «999 123 45 67»…
Регулярное выражение — мини-язык шаблонов. Опишем «одиннадцать цифр с любыми разделителями».
RegExp/шаблон/флаги или new RegExp("шаблон", "флаги") — второй способ нужен, если шаблон собирается из строки.const re = new RegExp("блок" + "нот", "i");
console.log(re, re.test("БЛОКНОТ"));\d цифра, \w буква/цифра/_, \s пробел, . любой символ, [абв] один из, [^…] кроме; * 0+, + 1+, ? 0–1, {2,4}; ^ начало, $ конец, | или, \b граница слова.console.log(/^\d{3}-\d{2}$/.test("123-45"), /^[A-Z]+\d+$/.test("SALE10"), /кот|пёс/.test("рыжий кот"));test()re.test(str) → true или false.console.log(/^\+?\d{11}$/.test("+79991234567"));exec() · lastIndexexec(str) — массив совпадения с группами и index, или null. С флагами g/y хранит позицию в lastIndex и находит следующее при каждом вызове.const re = /\d+/g;
const text = "блокнот 220, пенал 290";
let m;
while ((m = re.exec(text))) console.log(m[0], "на позиции", m.index, "lastIndex", re.lastIndex);source · toString()source — шаблон без слэшей и флагов, toString() — как литерал /…/flags.const re = /\d+/gi;
console.log(re.source, re.toString());Пиши якоря ^ и $, когда проверяешь всю строку целиком, — иначе подойдёт и кусок.
Напиши validPhone(s): убери из строки всё, кроме цифр (replace(/\D/g, "")), и проверь, что осталось ровно 11 цифр, начинающихся с 7 или 8 (test с якорями).
test — пока нетВыберите один ответ.
Что даст /\d{3}/.test("ab1234")?
Выберите один ответ.
Что значит + в регулярке?
Проверяем состояние обучения…