web-dev-qa-db-fra.com

Regex n'autorise que les nombres de moins de 10 chiffres?

J'essaie d'écrire une expression régulière pour vérifier qu'une entrée est un nombre entier pur et positif (jusqu'à 10 chiffres, mais j'applique cette logique ailleurs).

En ce moment, c'est la regex avec laquelle je travaille (que j'ai obtenue de ici ):

 ^(([1-9]*)|(([1-9]*).([0-9]*)))$

Dans cette fonction:

if (/^(([1-9]*)|(([1-9]*).([0-9]*)))$/.test($('#targetMe').val())) {
            alert('we cool')
        } else {
            alert('we not')
        }

Cependant, je n'arrive pas à le faire fonctionner, et je ne suis pas sûr que ce soit la regex ou la fonction. J'ai besoin de refuser%,. et 'ainsi. Je veux seulement des caractères numériques. Est-ce que quelqu'un peut-il me montrer la bonne direction?

8
streetlight

Vous pouvez faire de cette façon:

/^[0-9]{1,10}$/

Code:

var tempVal = $('#targetMe').val();
if (/^[0-9]{1,10}$/.test(+tempVal)) // OR if (/^[0-9]{1,10}$/.test(+tempVal) && tempVal.length<=10) 
  alert('we cool');
else
  alert('we not');

Référez-vous LIVE DEMO

20
Siva Charan
var value = $('#targetMe').val(),
    re    = /^[1-9][0-9]{0,8}$/;

if (re.test(value)) {
    // ok
}
8
fcalderan

Auriez-vous besoin d'une expression régulière?

var value = +$('#targetMe').val();
if (value && value<9999999999) { /*etc.*/ }
3
KooiInc
  var reg      = /^[0-9]{1,10}$/;
  var checking = reg.test($('#number').val()); 

  if(checking){
    return number;
  }else{
    return false;
  }
2
Krucamper

C'est le problème avec la copie aveugle du code. Les expressions rationnelles que vous avez copiées sont destinées à des nombres comprenant des nombres à virgule flottante avec un nombre arbitraire de chiffres - et cela pose problème, car le chiffre 0 ne serait pas autorisé avant le point décimal.

Vous voulez la regex suivante:

^[1-9][0-9]{0,9}$
1
Daniel Hilgarth

Utilisez cette expression régulière pour faire correspondre dix chiffres uniquement:

@"^\d{10}$"

Pour rechercher une séquence de dix chiffres consécutifs n'importe où dans une chaîne, utilisez:

@"\d{10}"

Notez que ceci trouvera également les 10 premiers chiffres d’un numéro à 11 chiffres. Pour rechercher n'importe où dans la chaîne exactement 10 chiffres consécutifs.

@"(?<!\d)\d{10}(?!\d)"
0
Sunil Acharya