如何将西里尔字符与正则表达式匹配

时间:2009-11-11 17:01:45

标签: regex unicode character-properties

如何将法语和俄语西里尔字母字符与正则表达式匹配?我只想做字母字符,没有数字或特殊字符。现在我有

[A-ZA-Z]

9 个答案:

答案 0 :(得分:35)

如果您的regex风格支持 Unicode阻止[\p{IsCyrillic}]),则可以将俄语( Cyrillic )字符与以下字符匹配:

[\p{IsCyrillic}]

否则尝试:

[U+0400–U+04FF]

<强>解释

[\p{IsCyrillic}]

Match a character from the Unicode block “Cyrillic” (U+0400–U+04FF) «[\p{IsCyrillic}]»

注意:

Unicode字符列表和[U+0400–U+04FF]的数字HTML实体。

答案 1 :(得分:23)

这取决于你的正则表达风味。如果它支持Unicode字符类(例如.NET),\p{L}匹配字母字符(在任何字符集中)。

答案 2 :(得分:10)

如果您使用现代PHP版本 - 只需:

preg_match("/^[\p{L}]+$/u");

不要忘记支持unicode的 u 标志!

答案 3 :(得分:4)

正则表达式将西里尔字母与普通(英语)字母表匹配:

^[A-Za-z.!@?#"$%&:;() *\+,\/;\-=[\\\]\^_{|}<>\u0400-\u04FF]*$

它匹配特殊字符,西里尔字母,英文字母。

答案 4 :(得分:3)

这对我有用

[a-z\u0400-\u04FF]

答案 5 :(得分:2)

各种正则表达式方言使用[:alpha:]表示当前语言环境中的任何字母数字字符。 (您可能需要将其放在字符类中,例如[[:alpha:]]。)

答案 6 :(得分:1)

如果您使用Elixir:

String.match?(string, ~r/^\p{Cyrillic}*$/u)

您需要添加u标志以支持unicode。

答案 7 :(得分:0)

要仅匹配俄语西里尔字母,请使用:

[\u0401\u0451\u0410-\u044f]

等效于:

[ЁёА-я]

其中А是西里尔字母,而不是拉丁字母。 (尽管看起来相同,但是代码不同)

\p{IsCyrillic}\p{Cyrillic}[\u0400-\u04FF],其他人建议的匹配对象是all variants of Cyrillic,不仅是俄语

答案 8 :(得分:-1)

在Java中,要匹配西里尔字母和空格,请使用以下模式

^[\p{InCyrillic}\s]+$