Javascript 将变量插入正则表达式字符串
我在StackOverflow上发现了很多关于如何做到这一点的问题,但这对我来说并不管用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')
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比您更成功:谢谢,但奥利奥击败了你: