2011-04-23 114 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