Фильтрация всех не алфавитно-цифровых символов в JavaScript - PullRequest
3 голосов
/ 29 сентября 2019

Я пытаюсь отфильтровать определенные символы из строки. Я не думаю, что это требует особого введения, поэтому вот несколько примеров.

const filt1 = "This will not be replaced: æ Ç ü";
const filt2 = "This will be replaced: » ↕ ◄";

// Output goal:
// filt1 = This will not be replaced: æ Ç ü
// filt2 = This will be replaced:   

Как бы я поступил так? Я хочу заменить все символы, которые не используются ни на одном языке.
Я хочу сохранить такие символы, как акцентированные символы и символы Chinse.
Стрелки, блоки и т. Д. Должны быть отфильтрованы.

Я пробовал много фильтров регулярных выражений, но ни один не делает то, что я хочу. Этот работает лучше всего:

((?![a-zA-ZàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ ]).)*

Но он громоздкий и не содержит буквенно-цифровых символов без акцента.
Извините, если текст этого сообщения трудно прочитать. Я уже давно занимаюсь этим, и мой мозг не функционирует нормально.

1 Ответ

2 голосов
/ 30 сентября 2019

Вы можете попробовать регулярное выражение Юникода /[^\p{L}\s]/ugi

console.log('This will be replaced: » ↕ ◄, This will not be replaced: æ Ç ü'.replace(/[^\p{L}\s]/ugi, ''));

В ES2018 добавлено экранирование свойств Unicode , поддержка браузера в настоящее время ограничена, node.js поддерживаетих с версии 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...