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

Inserting variables into a regular expression string

本文关键字:字符串 正则表达式 插入 变量      更新时间:2023-09-26

我在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 + '}$/')

我也尝试过用双引号代替单引号(不确定regex是否将单引号视为保留或其他东西)。

如果我删除引号并为变量输入数字,它会工作得很好:

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

jsFiddle:http://jsfiddle.net/88ef3/

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

new RegExp('^[''w.-]{' + min_length + ',' + max_length + '}$');

请记住,斜杠在javascript字符串中用于转义,但这里您希望斜杠作为字符,因此必须转义它本身。

new RegExp('^[''w.-]{' + min_length + ',' + max_length + '}$')

这可能有帮助

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';
http://jsfiddle.net/Et7J8/