Удаление всех знаков препинания из строки в JavaScript

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для очистки строки от знаков препинания примените метод .replace() вместе с корректно подобранным регулярным выражением:

JS
Скопировать код
const cleanString = "Пример строки, с пунктуацией!".replace(/[^\w\s]|_/g, "");

Данный код извлекает и удаляет все символы, не являющиеся буквами, цифрами или пробелами.

Кинга Идем в IT: пошаговый план для смены профессии

Разбираемся в строении регулярного выражения

Для составления эффективного шаблона регулярного выражения важно знать его элементы:

  • \w включает буквы, цифры и символ подчёркивания.
  • \s обозначает любые пробелы, табуляцию, переносы строк.
  • Комбинация [^\w\s] отфильтровывает все лишние символы, в особенности знаки препинания.
  • Символ подчёркивания _ также можно исключить, если он вам не нужен.

Учитываем пунктуацию в Unicode

Если вы работаете со строками, содержащими символы Unicode, модифицированный метод поможет удалить не только ASCII-пунктуацию, но и обширный набор других символов:

JS
Скопировать код
const cleanUnicodeString = "Пример строки—теперь с Unicode! 🎉".replace(/[\p{P}\p{S}]/gu, "");
// К сожалению, эмодзи также будут удалены.

Помните о использовании флага u для поддержки Unicode и удостоверьтесь, что ваша среда поддерживает ECMAScript 2018 или более свежую версию.

Удаляем лишние пробелы

Убираем излишние пробелы, сводя их к минимуму:

JS
Скопировать код
const singleSpacedString = cleanString.replace(/\s+/g, " ");
// Мы не любим беспорядок, не так ли?

За пределами ASCII: работаем с Unicode

Текст на различных языках может требовать обработки других блоков Unicode, от классической пунктуации до дополнительных знаков препинания:

JS
Скопировать код
const unicodePunctuationStrippedString = text.replace(/[\u2000-\u206F\u2E00-\u2E7F]/g, "");

Сохраняем определённые символы

Если вы хотите оставить в тексте некоторые символы, например апострофы, укажите это в шаблоне регулярного выражения:

JS
Скопировать код
const stringWithApostrophes = "They're avoiding the punctuation purge!".replace(/[^\w\s']|_/g, "");

Точность: удаление определённых символов с особым вниманием

Если нужно уточнить список удаляемых знаков препинания, вы можете перечислить их в шаблоне выражения:

JS
Скопировать код
const onlySpecificPunctuationRemoved = text.replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g, "")
                                          .replace(/\s{2,}/g, ' ');
// Вот так, знаки препинания, вас тоже касается.

Визуализация

Давайте посмотрим на преобразование строки в процессе удаления пунктуации:

Markdown
Скопировать код
До: "Привет, мир! Как дела у тебя? 👽"

Применяем регулярное выражение для очистки:

JS
Скопировать код
const sculpture = "Привет, мир! Как дела у тебя? 👽";
console.log(sculpture.replace(/[^\w\s]|_/g, "")
                     .replace(/\s+/g, " "));
// 'Они не позвонили домой достаточно быстро. 👽'

Результат выглядит так:

Markdown
Скопировать код
После: "Привет мир Как дела у тебя 👽"

Регулярные выражения помогают избавиться от всего лишнего, оставляя при этом только необходимые символы.

Танцы с современным JS: ES2018 и далее

В последних версиях JavaScript появились улучшения в работе с регулярными выражениями, включая выделение Unicode-пунктуации:

JS
Скопировать код
const modernStringSpa = "Строка — теперь свежа и без Unicode! 😄".replace(/[\p{P}\p{S}]/gu, "");
// К сожалению, эмодзи здесь не пройдут.

Обратите внимание, что для этого требуется поддержка ECMAScript 2018 (ES9) или более поздних версий.

Проверка результатов: обязательный этап

Перед внедрением регулярных выражений в функциональность приложения необходимо провести детальную проверку:

  1. Используйте онлайн-сервисы, например, regex101, для создания и отладки регулярных выражений.
  2. Разработайте детальные юнит-тесты для проверки корректности обработки строк в приложениях.

Полезные материалы

  1. Регулярные выражения в JavaScript на MDN — подробное руководство и справочник.
  2. regex101 — интерактивный инструмент для создания и тестирования регулярных выражений.
  3. Быстрый старт по регулярным выражениям — краткий и доступный справочник для начинающих.
  4. Шаблоны и флаги — углублённое изучение шаблонов сопоставления и флагов в JavaScript.
  5. GitHub – TomFrost/Jexl — продвинутые возможности для парсинга строк и выражений.
  6. ECMAScript 6: Новые возможности — каk упростить обработку строк с помощью шаблонных литералов ES6.