var x = 3;
var y = 11;
var str = 'adcdefg';//用户名
var regk = "/^[a-zA-Z\d]\w{"+x+","+y+"}[a-zA-Z\d]$/";//正则
var reg = eval(regk);
alert(reg);
if(reg.test(str)){
alert('1');
}else{
alert('0');
}
如上代码,alert弹出的内容正是正则表达式的内容,然而在匹配之后,仍旧弹出0,这是为什么?该如何修改?谢谢
"/^[a-zA-Z\d]\\w{"+x+","+y+"}[a-zA-Z\d]$/"
这么写regk
,用eval
的时候\
被转义了
"/^[a-zA-Z\\d]\\w{"+x+","+y+"}[a-zA-Z\\d]$/"
用RegExp:比如var re = new RegExp("^\\d+" + 变量 + "$", "abc")
var regk = "/^[a-zA-Z\d]\w{"+x+","+y+"}[a-zA-Z\d]$/";//正则
var reg = eval(regk);
转义符\改成\\
var regk = "/^[a-zA-Z\\d]\\w{"+x+","+y+"}[a-zA-Z\\d]$/";
var reg = eval(regk);
或者最好改成
var reg = new RegExp("^[a-zA-Z\\d]\\w{"+x+","+y+"}[a-zA-Z\\d]$");
用原生的 RegExp( ),不推荐用eval:
var reg = RegExp(带变量的字符串, 参数)
第一个字符串相当于原本正则 / / 里的内容。