2011-04-23 112 views
0

基本上我想返回一個錯誤,如果一個字段的值是非數字或小於定義的最小長度(從數組)。我竭力要得到這個JavaScript來的工作:正則表達式在javascript - 正則表達式中的變量

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-- 
    } 
} 

回答

2

到RegExp類(http://www.regular-expressions.info/javascript.html)請參考:

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

嗯..變種正則表達式=新正則表達式( 「/^[\ d] {」 + MIN_LENGTH [I] +「} $ /「);似乎不工作? – toop 2011-04-23 04:19:32

+0

'{n}'意味着n個匹配,所以要驗證少於特定的長度應該使用'{n,}',注意逗號。 – ShiningRay 2011-04-23 04:22:56

+0

對不起,應該是'{n,m}''m'表示最大長度爲 – ShiningRay 2011-04-23 04:28:47

1

正則表達式就可以方便的東西很多,但對於簡單的任務,他們都沒有最有效的方法。如何確定所述場不是一個數字,是一定長度的:

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在不需要時不使用正則表達式 – 2011-04-23 04:48:31