Как удалить лишние пробелы в строке? JavaScript RegExp

  Рет қаралды 1,620

Ефим Рябов

Ефим Рябов

Күн бұрын

Подробно разобран процесс написания регулярного выражения для метода replace(), которое удаляет лишние пробелы в строке JavaScript.
Рассмотрены понятия синтаксиса шаблона регулярного выражения "Утверждение", "Квантификатор", "Альтернатива", "Атом".
Затронута тема ошибок, которые могут возникнуть из-за "ложных" пробелов.
Рассмотрена таблица из алгоритма абстрактной операции GetSubstitution() стандарта ECMAScript.
Благодарю за просмотр!
Вы можете поддержать канал монеткой - Номер карты - 4276 5500 2378 3189
Ваша материальная поддержка придаст мне больше мотивации на создание нового материала.
Стандарт ECMAScript - Раздел "22.2 RegExp (Regular Expression) Objects" - tc39.es/ecma26...
Стандарт ECMAScript - Раздел "22.1.3.18 String.prototype.replace ( searchValue, replaceValue )" - tc39.es/ecma26...
Ссылка на публикацию - efim360.ru/jav...

Пікірлер: 27
@НикитаСмирнов-ъ2п
@НикитаСмирнов-ъ2п 10 ай бұрын
Спасибо Вам большое! Видео полезное и очень круто что Вы так все разобрали в этой теме для полного понимания, что и как работает! Отличное видео!
@ЕфимРябов
@ЕфимРябов 9 ай бұрын
Спасибо Вам за просмотр и обратную связь! Записывал как для себя и для людей, желающих реально разобраться в вопросе. Решил разобрать тему полностью.
@BorderInVais
@BorderInVais Жыл бұрын
Отлично, очень радует, что в отличии от той массы тех, кто просто из головы берет инфу по js, а не из спецификации
@strikerorion5290
@strikerorion5290 2 жыл бұрын
Жаль таких объяснений мало где найдешь.
@ЕфимРябов
@ЕфимРябов 2 жыл бұрын
Благодарю! Старался создать такое видео, как хотел, чтобы мне в своё время объяснили подобным образом. На слух воспринимать информацию куда проще и быстрее, чем самому пытаться разобрать какое-то решение на сайтах в сети интернет.
@serge-KSV
@serge-KSV 2 жыл бұрын
Просто, супер объяснение!!! Спасибо Вам.
@nouchance
@nouchance 2 жыл бұрын
Спасибо большое! Первый идея который приходил голову Метод trim();
@michel041100
@michel041100 2 жыл бұрын
Огромное спасибо, для Stage - 0 - самое оно!
@ЕфимРябов
@ЕфимРябов 2 жыл бұрын
Вам спасибо, что посмотрели! Визуально код может показаться простым для восприятия, но внутри он работает довольно "хитро". Поэтому решил подробнее разобрать этот вопрос т. к. уверен, что половина зрителей первый раз будут видеть регулярные выражения в деле. Хорошего дня!
@zherebetskyi4097
@zherebetskyi4097 2 жыл бұрын
Мощно! Лайк + Подписка
@ЕфимРябов
@ЕфимРябов 2 жыл бұрын
Спасибо Роман, что посмотрели! Старался осветить вопрос с самого нуля. Регулярные выражения работают во многих языках, поэтому видео может быть полезно любому, кто впервые сталкивается с подобной задачей. Решение компактное, но работает не так просто, как может показаться. --- По незнанию можно начать городить "лютые" конструкции в JavaScript.
@svloex
@svloex 2 жыл бұрын
А почему во втором мапе были другие цифры я так и не понял
@ЕфимРябов
@ЕфимРябов 2 жыл бұрын
Вторую строку специально заранее подготовил и просто скопировал в консоль браузера из редактора VSC. Сделал это для того, чтобы вы были готовы к проблемным ситуациям. Что проблема заключается не в самом нашем коде, а в том какие данные через этот код обрабатываются. Визуально данные выглядят одинаково, но по факту нет. --- Набрать "160 пробел" на клавиатуре просто невозможно, но он встречается в различных CMS (системах управления контентом). Например если вы пользуетесь Wordpress, то он последовательные "32 пробелы" начинает заменять(чередовать) на "160 пробелы". В видео как раз строчка подобного вида во втором map() --- С недавнего времени VSC научился подсвечивать "проблемные" символы, и это хорошо.
@ОлегД-э2ъ
@ОлегД-э2ъ Жыл бұрын
Да что вы все своими пробелами, это легко. Лучше расскажите, как заменить например третью запятую на точку в строке, разделенной 10 запятыми
@ЕфимРябов
@ЕфимРябов Жыл бұрын
Олег, благодарю за просмотр! Пробелы не совсем легко (как минимум потому что их не видно), но кому как. Если вам нужно регулярное выражение под замену третьей запятой на точку, то могу предложить такие два варианта: `а,б,в,г,д,е,ё,ж,з,и,к`.replace(/(.)+?(,)(.)+?(,)(.)+?(,)(.+)/g, `$1$2$3$4$5.$7`) 'а,б,в.г,д,е,ё,ж,з,и,к' `а,б,в,г,д,е,ё,ж,з,и,к`.replace(/(.+?,.+?,.+?)(,)(.+)/g, `$1.$3`) 'а,б,в.г,д,е,ё,ж,з,и,к' Если нужно учитывать строки в которых только 10 запятых, тогда нужно писать отдельную функцию, которая будет фильтровать нужный вам массив строк и только потом производить замены запятых на точки.
@ОлегД-э2ъ
@ОлегД-э2ъ Жыл бұрын
@@ЕфимРябов спасибо большое! Сейчас разберу решение.
@ОлегД-э2ъ
@ОлегД-э2ъ Жыл бұрын
А например в рамках скобочной группы я не могу внутри скобки исключить знак препинания?
@ОлегД-э2ъ
@ОлегД-э2ъ Жыл бұрын
@@ЕфимРябов function regular (str) { res = str.split('.') return res.join("").replace(/(\W+\s+\W+) (\W+\s+\W+) (\W+\s+\W+) (\W+\s+\W+)/g, "$1. $2. $3, $4.") } console.log (regular ("Вася Иванов. Маня Петрова. Кузя Кузнецов. Ваня Васев.")) Короче, свернул на дорожку читерства. Перевел в массив, потом разделил по пробелу и расставил знаки чере скобочные подстановки
@ЕфимРябов
@ЕфимРябов Жыл бұрын
Только вы знаете, как у вас организованы данные и что с ними нужно сделать. Сложные задачи в любом случае разделяются на маленькие подзадачи. Без функций и массивов никак.
@AlcoTesti
@AlcoTesti 2 жыл бұрын
Столько воды это капец , час смотреть про код в 3 строки ....
@ЕфимРябов
@ЕфимРябов 2 жыл бұрын
Добрый день! Видео ориентировано на людей, которые хотят разобраться в том, как работает решение из видео по поиску лишних пробелов. Это решение не "очевидное". У людей может быть разный опыт владения JavaScript. Если вам понятен код из видео, то это здорово.
Цикл FOR IN в JavaScript
54:04
Ефим Рябов
Рет қаралды 368
Не бойтесь регулярных выражений. Regex за 20 минут!
34:20
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 233 М.
05.01.  Introduction to LINQ
1:21:06
Mihail Romanov
Рет қаралды 189
Node.js is a serious thing now… (2023)
8:18
Code With Ryan
Рет қаралды 648 М.
КАК УСТРОЕН TCP/IP?
31:32
Alek OS
Рет қаралды 109 М.
Сортировка HTML таблицы на JavaScript
54:41
Ефим Рябов
Рет қаралды 830