2013-07-15 3 views
0

j'ai besoin regular expression pour le nombre a commencé avec 0 et la longueur de ce nombre est de 11validation en utilisant jQuery et expressions régulières

je trouve cette expression régulière pour les nombres, mais ce n'est pas pour la longueur et 0 à commencé

$('#myModal #transfer_charge_model_mob').keyup(function() { 
      var inputVal = $(this).val(); 
      var numericReg = /^\d*[0-9](|.\d*[0-9]|,\d*[0-9])?$/; 
      if (!numericReg.test(inputVal)) { 
       $('#myModal #transfer_charge_model_mob_lbl').text('please enter number'); 
       $(this).val(''); 
      } 
      else { 
       $('#myModal #transfer_charge_model_mob_lbl').text(''); 
      } 
     }); 
+3

/^ 0 \ d {10} $/serait mon premier essai mais je vois maintenant que vous utilisez sur keyup. Le mien serait utilisé sur changement ou flou – mplungjan

+0

@mplungjan Ce sera la meilleure approche. Parce que pour chaque touche, la fonction sera exécutée. – Praveen

+0

@mplungjan Votre commentaire a répondu à cette question :) alors faites cela comme une réponse. – Praveen

Répondre

2

Vous pouvez le faire sans regex.

var x = $(this).val(); 
var y = x * 1; 
if(!isNaN(y)) 
    if (x.charAt(0) === '0' && x.length == 11) 
    //do whatever 
+0

Les variables y = x * 1 et isNaN() vérifient s'il s'agit d'un nombre ou non. une chaîne de multiplication créera un NaN, et la partie 'est en train de taper' est gérée par le code – JTravakh

+0

mais pas z.length(). Et je crois que c'est z.length – mplungjan

+0

oui vous avez raison, corrigé. – JTravakh

0
var reg = /^0\d{10}$/; 
console.log(reg.test("01111111111")); 
+0

Grande suggestion - identique à mon commentaire – mplungjan

+0

@mplungjan En fait, je suis désolé. Une fois que j'ai vu cette question, j'essayais dans jsfiddle. Une fois que je l'ai eu, sans charger vos commentaires, j'ai posté comme réponse. Plus tard, j'ai vu vos commentaires et j'ai répondu. – Praveen

+0

Pas de problème:) ... – mplungjan

2

Vous avez votre overcomplicated regex:

^0\d{10}$ 

est sufficent.

+1

Grande suggestion - identique à mon commentaire – mplungjan

+1

Toutes mes excuses - Je n'avais pas remarqué votre commentaire quand j'ai écrit ça! –

1

Conversion mon commentaire à une réponse, de voir sa popularité était

Notez le sur ("changement") plutôt que le keyup

$('#transfer_charge_model_mob').on("change",function() { 
    var inputVal = $(this).val(); 
    var txt = /^0\d{10}$/.test(inputVal)?"":'please enter number';  
    $('#transfer_charge_model_mob_lbl').text(txt); 
    if (txt) $(this).val(''); 
}); 

Pour keyUp, vous pouvez essayer

Live Demo

$(function() { 
    $('#transfer_charge_model_mob') 
    .on("change",function() { 
     var inputVal = $(this).val(); 
     var txt = /^0\d{10}$/.test(inputVal)?"":'please enter number';  
     $('#transfer_charge_model_mob_lbl').text(txt); 
     //if (txt) $(this).val(''); // Very harsh if a typo 
    }) 
    .on("keyup",function(e) { 
    var val = $(this).val(); 
    var reg = /[^0-9]/g; 
    if (val.match(reg)) { 
     $(this).val(val.replace(reg,"")); 
    } 
    });  
});  
+0

+1 J'ai déjà voté pour votre commentaire et maintenant la réponse :) – Praveen

+0

Merci - mis à jour avec une version de code – mplungjan

+0

J'aime votre .on ("keyup"), en restreignant les alphabets étant entré. – Praveen