2010-10-19 4 views
0

J'essaie regex de savoir si un nombre est divisible par 10 ou par 5. Donc, fondamentalement, je suis en train de voir si la fin du nombre de 0 ou 5.Comment puis-je utiliser une regex pour déterminer si un nombre est divisible par 5?

Ceci est mon expression régulière ^[1-9]*0?.0$

Je rencontre des problèmes lorsque l'entrée est 100.0 ou 55.0

Quelle devrait être l'expression régulière?

Merci, Sandy

+7

Pourquoi êtes-vous nous? ing regex pour faire des maths? – chigley

+2

Certaines personnes, lorsqu'elles voient un problème, pensent "Je sais, j'utiliserai des expressions régulières". Maintenant, ils ont deux problèmes. –

+0

S'il vous plaît, ne le faites pas avec une regex. – quakkels

Répondre

1

Si vous doit faire avec regexes pour une raison quelconque, la réponse est:

/^\d*[05]\.0$/ 
  1. début de la chaîne
  2. Un nombre quelconque de chiffres (y compris aucun)
  3. A '0' ou '5'
  4. A '.' (Note backslash depuis. Est un métacaractère regex)
  5. A '0'
  6. Fin de chaîne
2

Pourquoi ne pas simplement faire

bool isDivisibleBy5 = ! (number % 5); 

? (Vous n'avez pas spécifié la langue que vous utilisez, mais cette syntaxe devrait au moins être compréhensible si vous venez d'un arrière-plan C-ish.)

+0

+1 pour aller sur cette route mathématique;) –

1

Si vous savez que vous passez des chaînes de nombres entiers, alors vous n'avez pas besoin pour vérifier les autres chiffres, juste si le chiffre avant la fin ou la virgule décimale est 5 ou 0. en outre, je suis permettant une quantité de 0 de chiffres après la virgule, parce que c'est toujours divisible par 5.

/[05](?:\.0+)?$/ 
1

Essayez cette expression

^([1-9] {1,9} [05] +) | 5 $

Questions connexes