Регулярное выражение для Umlaut
Я использую JS Animated Contact Form с этой строкой регулярного выражения:
rx:{".name":{rx:/^[a-zA-Z'][a-zA-Z-' ]+[a-zA-Z']?$/,target:'input'}, other fields...
Я только узнал, что я не могу ввести имя типа "Мюллер". Регулярное выражение не примет этого. Что мне делать, чтобы разрешить также Umlauts?
Ответы
Ответ 1
Вы должны использовать в своих кодах юникода регулярного выражения символы, например \u0080
.
Для немецкого языка я нашел следующую таблицу:
Zeichen Unicode
------------------------------
Ä, ä \u00c4, \u00e4
Ö, ö \u00d6, \u00f6
Ü, ü \u00dc, \u00fc
ß \u00df
(источник http://javawiki.sowas.com/doku.php?id=java:unicode)
Ответ 2
Попробуйте использовать это:
/^[\u00C0-\u017Fa-zA-Z'][\u00C0-\u017Fa-zA-Z-' ]+[\u00C0-\u017Fa-zA-Z']?$/
Я добавил диапазон unicode \u00C0-\u017F
к началу каждой из групп квадратных скобок.
Учитывая, что /^[\u00C0-\u017FA-Za-z]+$/.test("aeiouçéüß")
возвращает true
, я ожидаю, что он будет работать.
Кредит fooobar.com/questions/3944/....
Ответ 3
я использовал
A-Za-Z-ÁÀȦÂÄǞǍĂĀÃÅǺǼǢĆĊĈČĎḌḐḒÉÈĖÊËĚĔĒẼE̊ẸǴĠĜǦĞGĢĤḤáàȧâäǟǎăāãåǻǽǣćċĉčďḍḑḓéèėêëěĕēẽe̊ẹǵġĝǧğgģĥḥÍÌİÎÏǏĬĪĨỊĴĶǨĹĻĽĿḼMM̄'NŃNṄN̈ŇN̄ÑŅṊÓÒȮȰÔÖȪǑŎŌÕȬŐỌǾƠíìiîïǐĭīĩịĵķǩĺļľŀḽmm̄ʼnńnṅn̈ňn̄ñņṋóòôȯȱöȫǒŏōõȭőọǿơP̄ŔŘŖŚŜṠŠŞṢŤŢṬṰÚÙÛÜǓŬŪŨŰŮỤẂẀŴẄÝỲŶŸȲỸŹŻŽẒǮp̄ŕřŗśŝṡšşṣťţṭṱúùûüǔŭūũűůụẃẁŵẅýỳŷÿȳỹźżžẓǯßœŒçÇ
который поддерживает почти все символы в Европе. Источник истины
Ответ 4
Проблема с подходом \uXXXX заключается в том, что он поддерживается не всеми разновидностями Regex. Например, Visual C++ не поддерживает его. Там вам нужно будет перечислить реальные буквы.
Я рекомендую использовать такой инструмент, как https://www.regexbuddy.com/, который знает как можно больше вкусов.
Ответ 5
Я придумал комбинацию разных диапазонов:
[A-Za-zÀ-ž\u0370-\u03FF\u0400-\u04FF]
Но я вижу, что он пропускает некоторые буквы предложения @SambitD, обратитесь к: https://rubular.com/r/2g00QJK4rBS8Y4