10
votes

Regex pour vérifier si l'entrée n'est que des nombres entiers (int) et de vérifier si un autre n'est que des chiffres avec 2 décimales

Je veux savoir à quoi ressemblerait une regex pour:

  1. Seuls les nombres entiers
  2. Seuls des chiffres avec moins de ou égaux à deux décimales (23, 23.3, 23.43)

0 commentaires

3 Réponses :


3
votes

Numéros entiers uniquement

/\d(\.\d{1,2})?/


2 commentaires

Votre seconde ne correspond pas aux nombres entiers


True - pensa à l'origine que c'était l'intention, n'a pas lu la question avec précaution suffisamment. Fixé



48
votes

Seuls les nombres entiers:

var rx = new RegExp(/^\d+(?:\.\d{1,2})?$/);
console.log(rx.test('abc'));      // false
console.log(rx.test('309'));      // true
console.log(rx.test('30.9'));     // true
console.log(rx.test('30.85'));    // true
console.log(rx.test('30.8573'));  // false


1 commentaires

Meilleure explication de cela que j'ai jamais vu.



6
votes

i. [1-9] [0-9] * Si le numéro doit être supérieur à zéro (n'importe quelle série de chiffres commençant par un chiffre non zéro). Si cela devrait être zéro ou plus: (0 | [1-9] [0-9] *) (zéro ou un numéro non nul). Si cela peut être négatif: (0 | -? [1-9] [0-9] *) (zéro ou un numéro non nul qui peut avoir un minimum avant.)

ii. une regex comme I. suivi de: (\. [0-9] {1,2})? Cela signifie, éventuellement, un point suivi d'un ou deux chiffres.


1 commentaires

La chose la plus importante consiste à déterminer pourquoi ces regexnes fonctionnent! Les regex utilisent une logique différente que le flux de programme.