如何在正则表达式中匹配非ASCII(德语,西班牙语等)字母?

时间:2011-03-17 17:54:09

标签: javascript regex unicode

我无法找到或创建只匹配字母,空格,重音字母以及西班牙语和德语字母的正则表达式。

我现在正在使用它:

var reg = new RegExp("^[a-z _]*$");

我试过了:

^[:alpha: _]*$   
^[a-zA-Z0-9äöüÄÖÜ]*$  
^[-\p{L}]*$   

有什么想法吗?或者javascript引擎支持的正则表达式是有限的吗?

2 个答案:

答案 0 :(得分:3)

第二个到最后一个案例看起来应该有效,但缺少“”和“_”:

/^[a-zA-Z0-9äöüÄÖÜ]*$/.test("aäöüÄÖÜz") =>在FF 3.6和IE8中为true

/^[a-zA-Z0-9äöüÄÖÜ]*$/.test("é") =>在FF 3.6和IE8中为false

我无法在the ECMAScript specification找到其他结构。

快乐的编码。

编辑同时检查页面编码并确保它是“unicode”(可能是UTF-8)。如果无法确保这一点,那么在正则表达式中使用\uXXXX转义序列(无论如何都可以使用转义,并可能有助于源代码编辑/控制)。

答案 1 :(得分:1)

我正在解析名称输入字段,这似乎适用于德语和法语:

^[a-zA-Z\-ÀàÂâÆæÇçÈèÉéÊêËëÎîÏïÔôŒœÙùÛûÜü]*$

有些人的名字像'Rölf-Dieter',这可以让他们通过,同时检查数字。有点极端,但它确实有效!