web-dev-qa-db-fra.com

Comment faire correspondre les caractères cyrilliques avec une expression régulière

Comment faire correspondre les caractères de l'alphabet cyrillique français et russe avec une expression régulière? Je veux seulement faire les caractères alpha, pas de chiffres ni de caractères spéciaux. Maintenant j'ai

[A-Za-z]

39

Cela dépend de la saveur de votre regex. S'il prend en charge les classes de caractères Unicode (telles que .NET, par exemple), \p{L} correspond à un caractère de lettre (dans n'importe quel jeu de caractères).

23
Tim Pietzcker

Si votre style regex prend en charge blocs Unicode, vous pouvez faire correspondre les caractères russes (cyrillique) avec:

[\p{IsCyrillic}]

Sinon essayez:

[U+0400–U+04FF]

Explication:

[\p{IsCyrillic}]

Options: Case insensitive; Exact spacing; Dot doesn’t match line breaks; ^$ don’t match at line breaks; Numbered capture

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

Remarque:

Liste des caractères Unicode et entités HTML numériques de [U+0400–U+04FF] .

33
Pedro Lobito

Si vous utilisez la version moderne PHP - il suffit de:

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

N'oubliez pas le drapeau u pour le support unicode!

Regex pour faire correspondre les alphabets cyrilliques aux alphabets normaux (anglais):

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

Il correspond aux caractères spéciaux, aux alphabets cyrilliques et aux alphabets anglais.

4
Dipti Ghumbre

cela a fonctionné pour moi 

[a-z\u0400-\u04FF]
2
lili.b

Plusieurs dialectes regex utilisent [:alpha:] pour n’importe quel caractère alphanumérique de l’environnement local en cours. (Vous devrez peut-être l'insérer dans une classe de caractères, par exemple [[:alpha:]].)

2
Roger Pate

Si vous utilisez Elixir:

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

Vous devez ajouter l'indicateur u pour la prise en charge de l'unicode.

1
Marvin Rabe

Pour ne faire correspondre que les caractères cyrilliques russes, utilisez: 

[\u0401\u0451\u0410-\u044f]

qui est l'équivalent de: 

[ЁёА-я]

А est cyrillique et non latin. (Bien qu'ils aient l'air identiques, ils ont des codes différents)

\p{IsCyrillic}, \p{Cyrillic}, [\u0400-\u04FF] auxquels d'autres suggèrent de correspondre à toutes les variantes de cyrillique , pas seulement en russe

0
CITBL