regex 元音变音的正则表达式

guz6ccqo  于 2023-03-09  发布在  其他
关注(0)|答案(6)|浏览(179)

我正在使用JS动画联系人形式与此行的验证正则表达式:

rx:{".name":{rx:/^[a-zA-Z'][a-zA-Z-' ]+[a-zA-Z']?$/,target:'input'}, other fields...

我刚刚发现,我不能输入像“Müller”这样的名字。正则表达式不会接受这个。我必须做什么,才能允许变音?

vnzz0bqm

vnzz0bqm1#

你应该在你的正则表达式中使用字符的unicode代码,比如\u0080。对于德语,我找到了下表:

Zeichen     Unicode
------------------------------
Ä, ä        \u00c4, \u00e4
Ö, ö        \u00d6, \u00f6
Ü, ü        \u00dc, \u00fc
ß           \u00df

(来源http://javawiki.sowas.com/doku.php?id=java:unicode

jogvjijk

jogvjijk2#

请尝试使用此:

/^[\u00C0-\u017Fa-zA-Z'][\u00C0-\u017Fa-zA-Z-' ]+[\u00C0-\u017Fa-zA-Z']?$/

我已经将unicode范围\u00C0-\u017F添加到每个方括号组的开头。
考虑到/^[\u00C0-\u017FA-Za-z]+$/.test("aeiouçéüß")返回true,我认为它应该可以工作。
贷记到https://stackoverflow.com/a/11550799/940252

yjghlzjz

yjghlzjz3#

在JS中,你可以在正则表达式上使用u标志来访问一个特殊的“ meta序列”,即\p\p是一个Unicode识别的查找,它有一个特殊的Letter类别。这个类别将匹配德语,瑞典语,斯堪的纳维亚语,西里尔字符等。
简而言之,使用以下命令:

/\p{Letter}/u

Till Sanders的this article prop 。

x8diyxa7

x8diyxa74#

我想出了一个不同范围的组合:

[A-Za-zÀ-ž\u0370-\u03FF\u0400-\u04FF]

但我看到它漏掉了@SambitD提案的一些字母,请参考:https://rubular.com/r/2g00QJK4rBS8Y4

jdg4fx2g

jdg4fx2g5#

I used
A-Za-z-ÁÀȦÂÄǞǍĂĀÃÅǺǼǢĆĊĈČĎḌḐḒÉÈĖÊËĚĔĒẼE̊ẸǴĠĜǦĞG̃ĢĤḤáàȧâäǟǎăāãåǻǽǣćċĉčďḍḑḓéèėêëěĕēẽe̊ẹǵġĝǧğg̃ģĥḥÍÌİÎÏǏĬĪĨỊĴĶǨĹĻĽĿḼM̂M̄ʼNŃN̂ṄN̈ŇN̄ÑŅṊÓÒȮȰÔÖȪǑŎŌÕȬŐỌǾƠíìiîïǐĭīĩịĵķǩĺļľŀḽm̂m̄ʼnńn̂ṅn̈ňn̄ñņṋóòôȯȱöȫǒŏōõȭőọǿơP̄ŔŘŖŚŜṠŠȘṢŤȚṬṰÚÙÛÜǓŬŪŨŰŮỤẂẀŴẄÝỲŶŸȲỸŹŻŽẒǮp̄ŕřŗśŝṡšşṣťțṭṱúùûüǔŭūũűůụẃẁŵẅýỳŷÿȳỹźżžẓǯßœŒçÇ
which supports almost all the chars in Europe. Source of truth

p1tboqfb

p1tboqfb6#

\uXXXX方法的问题在于,并非所有的Regex风格都支持它。例如,Visual C++不支持它。在那里,您需要枚举实际的字母。
我建议使用像https://www.regexbuddy.com/这样的工具,它知道尽可能多的口味。

相关问题