Регулярное выражение для сохранения всех букв во всех алфавитах вместе с цифрами и подчеркиванием (проблема с буквами хинди)

#javascript #regex #hindi

Вопрос:

Я нашел шаблон регулярного выражения для удаления всех не алфавитных букв: p{L}

Таким образом, я выполнил регулярное выражение, чтобы удалить все не алфавитные, не цифровые и не подчеркивающие символы : /[^p{L}d_]/gimu

К сожалению, это не работает с персонажем хинди, #फ्रांस который дает फरस

Посмотрите сами здесь https://regex101.com/r/dnXDK0/1

И, пожалуйста, помогите мне 🙂

Ответ №1:

Ты забыл о диакритических знаках. Вам нужно добавить p{M} или p{Mn} в класс отрицаемых символов:

 /[^p{L}p{M}d_]/gu
 

Смотрите демонстрацию регулярных выражений.

Обратите внимание, что здесь вам не нужны флаги i и. m m переопределяет поведение привязки, но ваше регулярное ^ выражение не содержит ни $ . i делает регистровые буквы совпадающими без учета регистра, но p{L} соответствует всем буквам, прописным и строчным.