Regex - Что будет регулярным выражением для сопоставления иностранных символов?
Я занимаюсь разработкой и применением для европейского клиента, и у них есть свой собственный набор символов.
Теперь мне нужно иметь регулярное выражение, которое позволило бы иностранные символы, такие как eéèêë
и т.д., и я не уверен, как это можно сделать.
Какие-либо предложения?
5 ответов
Если все, что вы хотите сопоставить, это буквы (включая "международные"), вы можете использовать \p{L}
,
Вы можете найти некоторую информацию о регулярных выражениях и Unicode здесь.
Если вы хотите сопоставить любой латинский символ с ударением или диакритическим знаком практически в любом механизме регулярных выражений, попробуйте:
[A-Za-zŽžÀ-ÿ]
Он соответствует любому символу из следующих наборов « Printable and Extended ASCII Character » :
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
ŽžÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
Соответствует {char} (индекс символов ASCII, с учетом регистра):
Протестируйте его на https://regex101.com/r/Xbbtm1/1.
\p{L} еще не поддерживает кроссбраузерность. Транспортировка этого кода даст вам сильно раздутый код, если вы будете его часто использовать.
Вот краткий и приятный ответ на то, как обычно включать буквы не в формате ASCII, которые не добавляют миллиарды строк JavaScript или плагинов. Замените a-zA-Z0-9 или \w в вашем регулярном выражении на это и не используйте флаг u:
\ u00BF- \ u1FFF \ u2C00- \ uD7FF \w
Это вставлено во все мои регулярные выражения JavaScript вместо a-zA-Z0-9 или \w, похоже, работает. Мой контекст заключался в различении UTF-8 в HTML и CSS, и он должен был быть кроссбраузерным.
Я не могу поверить, что это так просто, так что жду, когда меня докажут, после целого дня поисков попыток заставить что-то работать в Firefox...
Я тестировал это только на японской хиригане с французским акцентом.
Зависит от используемой библиотеки регулярных выражений / языка регулярных выражений.