"000001" convient très bien à
/(?:-)?(?:[1-9]{1}[0-9]*|0{1})(?:(?:\.|,)[0-9]*[1-9]{1})?/
Décortiquons :
Tu n'as pas inclus "^" en début d'expression donc on commence où on veut :
Permier caractère, un zéro :
(?:-)? -> [OUI] pas de signe négatif
[1-9]{1}[0-9]* -> [NON] passons à l'autre clause dans la condition "ou"
0{1} -> [OUI]
La suite ? Elle est facultative : d'une part parce que tu n'as pas mis de "$" final et d'autre part parce que la dernière portion de ton expression est... facultative, en effet ("?"). 
Ça ne devrait pas dépendre du langage. JavaScript implémente les expressions de type PERL (pas tout à fait entièrement, hélàs). Peut-être que C# s'en écarte un peu ? Java, lui aussi, implémente PERL (avec peut-être qq variations, je ne me souviens plus) mais force est de constater que, dans l'ensemble, les deux langages donnent les mêmes résultats. Comme exceptions on pourra citer certaines classes de caratères comme \p{L}, etc. : JavaScript ne les supporte pas.
Partager