关于javascript:Umlaut的正则表达式

Regex for Umlaut

我将JS动画联系表单与以下验证正则表达式一起使用:

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

我刚刚发现,我无法输入"Müller"之类的名称。 正则表达式将不接受此。 为了允许Umlauts,我该怎么办?


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

1
2
3
4
5
6
Zeichen     Unicode
------------------------------
?, ?        \\u00c4, \\u00e4
?, ?        \\u00d6, \\u00f6
ü, ü        \\u00dc, \\u00fc
?           \\u00df

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


尝试使用此:

1
/^[\\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。


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

1
[A-Za--?\\u0370-\\u03FF\\u0400-\\u04FF]
  • 变音标记:[à-?]
  • 希腊语和科普特语:
    [\ u0370- \ u03FF]
  • 西里尔文:[\ u0400- \ u04FF]

但我看到它缺少@SambitD提案的某些字母,请参阅:https://rubular.com/r/2g00QJK4rBS8Y4


我用了

A-Za-z-á???????????????????????????????????????????????????????????? ???????????????????????????????????????????????????????????? M M M ?????????????????????????????????ī m m m?m ???ňP P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P ????????????????????????????????????????????????????????????????????????????????????????????? ????????????? t; tru


\ uXXXX方法的问题在于,并非所有正则表达式都支持它。 例如,Visual C ++不支持它。
在那里,您需要枚举实际字母。

我建议使用诸如https://www.regexbuddy.com/之类的工具,该工具应尽可能了解多种口味。