J’ai une expression régulière:
return Regex.IsMatch(_customer.FirstName, @"^[A-Za-z][A-Za-z0-9@#%&\'\-\s\.\,*]*$");
Maintenant, certains clients ont un fada sur une voyelle dans leur nom de famille ou leur prénom, comme suit: Brendán
Notez le fada sur le a que vous pouvez obtenir en maintenant les touches alt , ctrl et enfoncées.
J’ai essayé d’append ces caractères à l’expression régulière, mais un message d’erreur s’affiche lorsque le programme tente de comstackr.
Le seul moyen de permettre à l’utilisateur de saisir un tel caractère avec un fada est de supprimer complètement l’expression régulière, ce qui signifie que l’utilisateur peut saisir ce qu’il veut.
Existe-t-il un moyen d’utiliser l’expression ci-dessus et d’autoriser les caractères suivants?
á é í ó ú
Juste pour référence, vous n’avez pas besoin d’échapper à ce qui précède ',.
dans votre classe de personnage []
, et vous éviterez d’échapper au tiret en le plaçant au début ou à la fin de votre classe de personnage.
Vous pouvez utiliser \p{L}
qui correspond à n’importe quel type de lettre de n’importe quelle langue. Voir l’exemple ci-dessous:
ssortingng[] names = { "Brendán", "Jóhn", "Jason" }; Regex rgx = new Regex(@"^\p{L}+$"); foreach (ssortingng name in names) Console.WriteLine("{0} {1} a valid name.", name, rgx.IsMatch(name) ? "is" : "is not"); // Brendán is a valid name. // Jóhn is a valid name. // Jason is a valid name.
Ou simplement, ajoutez simplement les caractères souhaités à votre classe de personnage []
vous souhaitez inclure.
@"^[a-zA-Z0-9áéíóú@#%&',.\s-]+$"
Essayez d’incorporer \p{L}
qui correspondra à une “lettre” unicode. Donc a
et á
doivent correspondre à \p{L}
.
Bonne chance!
Pour que votre expression régulière puisse inclure des voyelles avec un accent aigu ( fada ), vous pouvez utiliser des points de code Unicode. Vous devez connaître ces blocs unicode:
D’autres graphiques de code Unicode à l’ adresse http://www.unicode.org/charts/index.html#scripts , couvrant le latin étendu-B, -C et -D et le latin étendu-additionnel (qui devrait couvrir à peu près toutes les langues européennes dans son intégralité).
Donc, nous voyons que les voyelles fada irlandaises sont
Á
est \u00C1
; á
est \u00E1
É
est \u00C9
; é
est \u00E9
Í
est \u00CD
; \u00ED
Ó
est \u00D3
; ó
est \u00F3
Ú
est \u00DA
; ú
est \u00FA
Et ainsi votre expression régulière doit être étendue:
Regex rx = new Regex( @"^[A-Za-z\u00C1\u00C9\u00CD\u00D3\u00DA\u00E1\u00E9\u00ED\u00F3\u00FA][A-Za-z\u00C1\u00C9\u00CD\u00D3\u00DA\u00E1\u00E9\u00ED\u00F3\u00FA0-9@#%&\'\-\s\.\,*]*$");
\w
(caractères de mot) inclut des caractères unicode.
Donc, votre expression pourrait être:
@"^\w[\w0-9@#%&\'\-\s\.\,*]*$"
(Remplacement de A-Za-z
par \w
)
Essayez comme ci-dessous. Cela vous aidera…
return Regex.IsMatch(_customer.FirstName, @"^[0-9A-Za-z@#%&\'\-\s\.\,ñáéíóúü]+$");