如何将法语和俄语西里尔字母字符与正则表达式匹配?我只想做字母字符,没有数字或特殊字符。现在我有
[A-ZA-Z]
答案 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]+$