Question

J'ai asp: TextBox pour conserver une valeur monétaire, c'est-à-dire "1000", "1000,0" et "1000,00" (la virgule est le délimiteur en raison de la norme russe).

Quel ValidationExpression dois-je utiliser dans le asp approprié: RegularExpressionValidator ?

J'ai essayé \ d + \, \ d {0,2} mais cela ne permet pas un nombre sans chiffres décimaux, par exemple. juste '1000'.

Était-ce utile?

La solution

\d+(,\d{1,2})?

n'autorisera la virgule que lorsque vous avez des chiffres décimaux et n'autorisera aucune virgule. Le point d'interrogation signifie la même chose que {0,1} . Ainsi, après le \ d + , vous avez soit zéro instance (c'est-à-dire rien), soit une instance de

.
,\d{1,2}

Comme le souligne correctement Helen, il suffira d’utiliser un groupe non capturant, comme dans

\d+(?:,\d{1,2})?

Le ?: supplémentaire signifie que les parenthèses ne servent qu'à grouper la partie , \ d {1,2} à utiliser avec le point d'interrogation, mais Il n’est pas nécessaire de se rappeler ce qui a été mis en correspondance dans ces parenthèses. Dans la mesure où cela représente moins de travail pour le moteur de regex, vous obtenez un gain de performances.

Autres conseils

Nous utilisons cette expression régulière très libérale pour la validation de l'argent:

new Regex(@"^\-?\(?\$?\s*\-?\s*\(?(((\d{1,3}((\,\d{3})*|\d*))?(\.\d{1,4})?)|((\d{1,3}((\,\d{3})*|\d*))(\.\d{0,4})?))\)?<*>quot;);

Cela permet à tous ceux-ci: 0, 0, (0,0000), 0,1, 0,01, 0,001, 0,1, 0,01, 0,001, (0,1), (0,01), $ (0,001), 0,1, 0,01 , 0.0001, 1., 1111., 1111., 1, 1,00, 1 000,00, 1 $, 1,00 $, 1 000,00 $, 1,0000 $, 1,0000 $, 1 000,0000, -1, -1,00, -1,00,00, - 1,00 $, - 1,00 $, - 1 000,00 $ , - 1 $, - 1,00 $, - 1 000,00 $, -1 $, -1,00 $, -1 000,00 $, (1), $ (1,00), $ (1 000,00), $ (1), $ (1,00), (1 000,00 $), (1 $), (1,00 $), (1 000,00 $)

j’ai utilisé celui-ci dans javascript : peut vous être utile en c #

var entered = '10.00';
var regex = /^\d+(?:\.\d{2})?$/; // starts with N digits optional ".\d\d"
console.log(entered.match(regex));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top