Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将变量插入正则表达式字符串_Javascript_Regex - Fatal编程技术网

Javascript 将变量插入正则表达式字符串

Javascript 将变量插入正则表达式字符串,javascript,regex,Javascript,Regex,我在StackOverflow上发现了很多关于如何做到这一点的问题,但这对我来说并不管用 var username = "abcdefg"; var min_length = 3; var max_length = 24; var regex = new RegExp('^[\w.-]{' + min_length + ',' + max_length + '}$'); if (regex.test(username)) document.getElementById('status')

我在StackOverflow上发现了很多关于如何做到这一点的问题,但这对我来说并不管用

var username = "abcdefg";
var min_length = 3;
var max_length = 24;
var regex = new RegExp('^[\w.-]{' + min_length + ',' + max_length + '}$');
if (regex.test(username))
    document.getElementById('status').innerHTML = 'match';
else
    document.getElementById('status').innerHTML = 'no match';
我也尝试过前后使用斜杠:

new RegExp('/^[\w.-]{' + min_length + ',' + max_length + '}$/')
我也尝试过用双引号代替单引号,但不确定正则表达式是否将单引号视为保留引号

如果我删除引号并为变量输入数字,则效果良好:

new RegExp(/^[\w.-]{3,24}$/)
jsFiddle:

使用RegExp构造函数从字符串构建正则表达式时,必须转义斜杠:

new RegExp('^[\\w.-]{' + min_length + ',' + max_length + '}$');
请记住,javascript字符串中的斜杠用于转义,但这里您希望将斜杠作为字符,因此必须转义它自己

使用RegExp构造函数从字符串构建正则表达式时,必须转义斜杠:

new RegExp('^[\\w.-]{' + min_length + ',' + max_length + '}$');
请记住,javascript字符串中的斜杠用于转义,但这里您希望将斜杠作为字符,因此必须转义它自己

这可能会有帮助

var username = "abcdefg";
var min_length = 3;
var max_length = 24;
var str1='^[\\w.-]{'+min_length+','+max_length+'}$';
var regex = new RegExp(str1,"i");
if (regex.test(username))
    document.getElementById('status').innerHTML = 'match';
else
    document.getElementById('status').innerHTML = 'no match';
这可能会有帮助

var username = "abcdefg";
var min_length = 3;
var max_length = 24;
var str1='^[\\w.-]{'+min_length+','+max_length+'}$';
var regex = new RegExp(str1,"i");
if (regex.test(username))
    document.getElementById('status').innerHTML = 'match';
else
    document.getElementById('status').innerHTML = 'no match';

你确定如果你只是键入数字就行了吗?检查这个:你在jsfiddleyes中包含/在你的模式中,但是我在这里用Outlook尝试过,如果你只是键入数字就行了吗?检查这个:你在jsfiddleyes中包含/在你的模式中,但我已经用Outlook试过了,就是Outlook做到了!非常感谢。10分钟后我会接受的。@Gavin还从其他评论中注意到,您在RegExp构造函数中不使用/,因为/是regex文本的分隔符。这就是我想的,我只是不明白为什么这不起作用,所以我尝试了我能想到的一切。成功了!非常感谢。10分钟后我会接受的。@Gavin还从其他评论中注意到,您不在RegExp构造函数中使用/,因为/是regex文本的分隔符。这就是我想的,我只是不明白为什么这样做不起作用,所以我尽了我所能。谢谢,但Oriol比您更成功:谢谢,但奥利奥击败了你: