2 votes

Regex ne fonctionne pas dans les applications, mais il fonctionne sur les sites web.

J'utilise une expression rationnelle pour valider si la valeur entrée par l'utilisateur est valide.

string value = "500,21";
bool is_valid = Regex.IsMatch(value, "/^[0-9]+([,.][0-9]{2,2})?$/");

Ce morceau de code devrait accepter des valeurs comme :

500.21
500,21

Pourtant, il donne une erreur disant que ce n'est pas une valeur valide.

Cependant, en utilisant des sites web comme https://www.regextester.com/ ou https://regex101.com/ ma regex fonctionne parfaitement comme vous pouvez le voir ici https://regex101.com/r/s6Cl9I/1

3 votes

Supprimer ces / s

2 votes

Lorsque vous testez des expressions régulières sur des sites Web, assurez-vous qu'ils prennent en charge le moteur utilisé par .Net. Tous les moteurs d'expressions régulières ne sont pas les mêmes.

0 votes

@L.B merci, ça a marché.

2voto

StriplingWarrior Points 56276

Les barres obliques sont le moyen utilisé par JavaScript pour indiquer les limites d'une expression régulière, de la même manière que les guillemets indiquent les limites d'une chaîne de caractères. Par exemple, les deux expressions suivantes en JavaScript sont équivalentes :

/^[0-9]+([,.][0-9]{2,2})?$/.test("500,21")

new RegExp("^[0-9]+([,.][0-9]{2,2})?$").test("500,21")

Les testeurs de Regex en ligne ajouteront souvent ces tirets avant pour vous, car ils pensent dans un contexte JavaScript. Mais ils ne font pas réellement partie de l'expression régulière elle-même.

En C#, vous transmettez l'expression régulière sous la forme d'une chaîne, de sorte que ces barres obliques ne sont pas nécessaires.

string value = "500,21";
bool is_valid = Regex.IsMatch(value, "^[0-9]+([,.][0-9]{2,2})?$");

0voto

zambonee Points 1399

C# n'aime pas les / au début et à la fin de votre expression. Les moteurs Regex peuvent avoir différents formats et caractères spéciaux, alors faites-y attention !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X