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

Gre*_*zer 47 regex unicode character-properties

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

[A-ZA-Z]

Ped*_*ito 37

如果您的正则表达式支持Unicode块,则可以将俄语(西里尔语)字符与以下内容匹配:

[\p{IsCyrillic}] or [\p{Cyrillic}]
Run Code Online (Sandbox Code Playgroud)

否则尝试:

[U+0400–U+04FF]
Run Code Online (Sandbox Code Playgroud)

说明:

[\x{0400}-\x{04FF}]
Run Code Online (Sandbox Code Playgroud)

注意:

Unicode字符列表和数字HTML实体regex.


Tim*_*ker 23

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


CIT*_*TBL 11

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

[\u0401\u0451\u0410-\u044f]
Run Code Online (Sandbox Code Playgroud)

这相当于:

[???-?]
Run Code Online (Sandbox Code Playgroud)

哪里?是西里尔文,不是拉丁文。(尽管看起来一样,但它们有不同的代码)

\p{IsCyrillic}, \p{Cyrillic},[\u0400-\u04FF]其他人建议将匹配西里尔字母的所有变体,而不仅仅是俄语


Оле*_*ьев 9

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

preg_match("/^[\p{L}]+$/u");
Run Code Online (Sandbox Code Playgroud)

不要忘记u标志支持unicode!

  • 你能解释一下你的正则表达式吗?我用“Бори́с”尝试过,但它不匹配,所以你的正则表达式不起作用。 (2认同)

小智 7

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

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

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

  • 非英文字母不正常???更何况只有1个英文字母 (2认同)

小智 5

各种正则表达式方言[:alpha:]用于当前语言环境中的任何字母数字字符。(你可能需要把它放在一个字符类中,例如[[:alpha:]]。)


lil*_*i.b 5

这对我有用

[a-z\u0400-\u04FF]
Run Code Online (Sandbox Code Playgroud)

  • 匹配仅西里尔字符使用`[\u0400-\u04FF]` (2认同)