Javascript 动态插入在正则表达式中不起作用
我有这个功能Javascript 动态插入在正则表达式中不起作用,javascript,regex,Javascript,Regex,我有这个功能 function validateUsername(str,minL,maxL){// i'm passing validateUsername("asdf_1",2,8) var exp=new RegExp(/^[a-z0-9_-]\w{"+minL+","+maxL+"}$/); switch(exp.test(str)){ case true: return true; case false: return false; } } 我想动态插入最小长度和
function validateUsername(str,minL,maxL){// i'm passing validateUsername("asdf_1",2,8)
var exp=new RegExp(/^[a-z0-9_-]\w{"+minL+","+maxL+"}$/);
switch(exp.test(str)){
case true: return true;
case false: return false;
}
}
我想动态插入最小长度和最大长度,
但是如果使用上面的代码,它会告诉我它是否应该接受字符串为true
有人能告诉我,我应该使用“+变量+”来动态插入值吗
提前感谢。您可以使用从所述字符串构建正则表达式
示例摘自链接答案:
var re = new RegExp("a|b", "i");
// same as
var re = /a|b/i;
在您的情况下,这将执行以下操作:
function validateUsername(str,minL,maxL){// i'm passing validateUsername("asdf_1",2,8)
var exp=new RegExp("^[a-z0-9_-]\w{" + minL + "," + maxL + "}$");
/*
why ???
switch(exp.test(str)){
case true: return true;
case false: return false;
}
*/
return exp.test(str);
}
您可以将长度验证与模式分开,类似这样
if(str.length<minL || str.length>maxL){
// invalid length
}else{
var exp=new RegExp(/^[a-z0-9_-]\w$/);
return exp.test(str)
}
if(str.lengthmaxL){
//无效长度
}否则{
var exp=新的RegExp(/^[a-z0-9_-]\w$/);
返回exp.test(str)
}
这将导致结果为false,{required,required}在我的情况下,否则输出为false。我不是在检查长度,我想在正则表达式中插入动态最小和最大长度。@k102-dude,我问,在返回的情况下,我应该使用什么才能使我的答案为true。此函数用于密码验证。我知道这是一个小问题,但我的问题不同。