首页 > 在正则表达式中使用变量

在正则表达式中使用变量

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(带变量的字符串, 参数)

第一个字符串相当于原本正则 / / 里的内容。

【热门文章】
【热门文章】