2011-04-23 5 views
0

Fondamentalement, je veux retourner une erreur si la valeur d'un champ est non-numérique ou inférieure à une longueur minimale définie (à partir du tableau). Je me bats pour obtenir ce javascript au travail:regex en javascript - variable interne regex

var fields = new Array("field_1","field_2","field_3"); 
var length = new Array(12,4,3); 
for (i=0; i < fields.length; i++) { 
    var regex = "/^[\d]{" + min_length[i] + "}$/"; // 
var field = document.getElementById(numeric_fields[i]); 
if (!regex.test(field.value)) { 
     alert("error"); 
    } 
    else { 
     --do other stuff-- 
    } 
} 

Répondre

2

S'il vous plaît se référer à la classe RegExp (http://www.regular-expressions.info/javascript.html):

var regex = new RegExp("^\d{1,"+min_length[i] + ",}$"); 
+0

hmm .. var regex = new RegExp ("/^[\ d] {" + min_length [i] + « } $/"); ne semble pas fonctionner? – toop

+0

'{n}' signifie exactement n correspond, donc pour valider moins qu'une longueur spécifique devrait utiliser '{n,}', faites attention à la virgule. – ShiningRay

+0

Désolé, ce devrait être '{n, m}' 'm' signifie la longueur maximale – ShiningRay

1

Les expressions régulières peuvent être utiles pour beaucoup de choses, mais pour des tâches plus simples, ils ne sont pas le moyen le plus efficace. Que diriez-vous de déterminer si le champ est pas un nombre et d'une certaine longueur:

var fields = ["field_1", "field_2", "field_3"]; 
var length = [12, 4, 3]; 
for (var i = 0, len = fields.length; i < len; i++) { 
    var field = document.getElementById(numeric_fields[i]); 
    var value = field.value; 
    if (isNaN(field.value) || field.value.toString().length < min_length[i]) { 
     alert("error"); 
    } else { 
     // do other stuff 
    } 
} 
+0

+1 pour ne pas utiliser regex lorsqu'il n'est pas nécessaire –