Cette question devrait être plus précis: par exemple, acceptez-vous les espaces entre les chiffres? acceptez-vous la virgule au début/à la fin? Acceptez-vous l'espace avant la virgule? Acceptez-vous plusieurs espaces consécutifs? Acceptez-vous des espaces au début/à la fin?
Je vais supposer ce que je pense est le plus probable, de sorte que vous n'acceptez pas les espaces entre les chiffres, vous n'acceptez pas la virgule au début/fin, mais vous acceptez l'espace avant et après la virgule espaces et vous acceptez les espaces au début/à la fin.
/^ *([0-9]+(*, *[0-9]+)*)? *$/
- "": true
- " ": true
- "123": true
- "123,45": true
- "123, 45, 67" : true
- " 123": true
- « 3" : false
- », 45" : false
- "123,": false
La clé lors de l'écriture regex pour correspondre à une liste d'éléments "E" délimitée par un séparateur "S" c'est que vous devrez écrire deux fois le "E" matcher (ici c'est simplement "[0-9] +").
- le principe de la tendance est E (SE) *
- E est "[0-9] +": simplement une séquence de chiffres
- S "*, *" (notez les espaces): une virgule avec des espaces avant et après optionnels
à ce stade, nous avons:
/^[0-9]+(*, *[0-9]+)*$/
nous un peu il améliore, il accepte également des espaces en début/fin, s Paces seulement et des chaînes vides:
/^ *([0-9]+(*, *[0-9]+)*)? *$/
Remarque Personnellement, je préfère utiliser [0-9] au lieu de \ d, je pense qu'il est moins déroutant de lire.
Obligatoire Citation JWZ "Certaines personnes, lorsqu'elles sont confrontées à un problème, pensent 'je sais, j'utiliserai des expressions régulières'. Maintenant, ils ont deux problèmes." –
Etes-vous sûr que c'est un coMa? – microspino
@Microspino: le coma est ce que les gens essaient de faire fonctionner l'expression rationnelle. –