javascript正则表达式替换变量

Mir*_*lic 0 javascript regex string replace

我如何用正则表达式替换字符,但是从变量.例:

var separator = '-';
text = text.replace(/[-\s]+/g, separator);
Run Code Online (Sandbox Code Playgroud)

这将替换-使用分隔符的尾随字符,在这种情况下我是相同的.

所以,我需要设置这个-来自变量分隔符的字符:

var separator = '-';
var regex = '/['+separator+'\s]+/g';
text = text.replace(regex, separator);
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?谢谢.

fal*_*tru 7

使用RegExp动态生成的正则表达式:

function escapeRegExp(string){
    return string.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
}
var regex = new RegExp('[' + escapeRegExp(separator) + '\\s]', 'g');
Run Code Online (Sandbox Code Playgroud)

escapeRegExp来自正则表达式 - JavaScript | MDN.

注意:你必须逃避\,并且separator.