如何将法语和俄语西里尔字母字符与正则表达式匹配?我只想做字母字符,没有数字或特殊字符。现在我有
[A-Z-Z]
如果您的regex
风格支持Unicode 块( [\p{IsCyrillic}]
),您可以将西里尔字符与:
[\p{IsCyrillic}] or [\p{Cyrillic}]
否则尝试使用:
[U+0400–U+04FF]
使用PHP
:
[\x{0400}-\x{04FF}]
解释:
[\p{IsCyrillic}]
Match a character from the Unicode block “Cyrillic” (U+0400–U+04FF) «[\p{IsCyrillic}]»
笔记:
Unicode 字符列表和数字 HTML 实体[U+0400–U+04FF]
。
这取决于您的正则表达式风格。如果它支持 Unicode 字符类(例如 .NET),则\p{L}
匹配一个字母字符(在任何字符集中)。
要仅匹配俄语西里尔字符,请使用:
[\u0401\u0451\u0410-\u044f]
这相当于:
[ЁёА-я]
哪里А
是西里尔文,不是拉丁文。(尽管看起来相同,但它们有不同的代码)
\p{IsCyrillic}
, \p{Cyrillic}
,[\u0400-\u04FF]
其他人建议将匹配西里尔文的所有变体,而不仅仅是俄语
如果您使用现代 PHP 版本 - 只需:
preg_match("/^[\p{L}]+$/u");
不要忘记支持 unicode的u标志!
正则表达式将西里尔字母与普通(英文)字母匹配:
^[A-Za-z.!@?#"$%&:;() *\+,\/;\-=[\\\]\^_{|}<>\u0400-\u04FF]*$
它匹配特殊字符、西里尔字母、英文字母。
各种正则表达式方言[:alpha:]
用于当前语言环境中的任何字母数字字符。(你可能需要把它放在一个字符类中,例如[[:alpha:]]
。)
这对我有用
[a-z\u0400-\u04FF]
如果您使用 Elixir:
String.match?(string, ~r/^\p{Cyrillic}*$/u)
您需要u
为 unicode 支持添加标志。
在 Java 中匹配西里尔字母和空格使用以下模式
^[\p{InCyrillic}\s]+$