Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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_String_Variables - Fatal编程技术网

Javascript 如何将正则表达式与变量而不是字符串一起使用?

Javascript 如何将正则表达式与变量而不是字符串一起使用?,javascript,regex,string,variables,Javascript,Regex,String,Variables,问了好几次,但我都没法用 我在替换各种类名的脚本上做了很多这样的工作 label.className.replace(/(?:^|\s)ui-icon-checkbox-on(?!\S)/g , ' ui-icon-globe'); 并想用一个通用函数替换我的replace调用,该函数在上被传递一个类似ui图标的字符串复选框,并返回一个regex对象来处理我的替换 但是,这不起作用=它没有取代任何东西: var foo = function (className) { return new

问了好几次,但我都没法用

我在替换各种类名的脚本上做了很多这样的工作

label.className.replace(/(?:^|\s)ui-icon-checkbox-on(?!\S)/g , ' ui-icon-globe');
并想用一个通用函数替换我的
replace
调用,该函数在上被传递一个类似
ui图标的字符串复选框,并返回一个regex对象来处理我的替换

但是,这不起作用=它没有取代任何东西:

var foo = function (className) {
  return new RegExp("(?:^|\s)" + className + "(?!\S)", "g");
};

label.className = label.className.replace(foo("ui-icon-checkbox-on"), ' ui-icon-globe');
我不知道为什么

问题
如何正确地创建一个正则表达式对象,并使用它来用另一个字符串替换一个字符串

谢谢


PS:不,我不想使用jQuery来实现:-)

您需要转义转义的RegExp序列:

var foo2 = function (className) {
  return new RegExp("(?:^|\\s)" + className + "(?!\\S)", "g");
  //----------------------^^^---------------------^^^
};
您的原始函数将返回:

foo("ASD")
// returns:
/(?:^|s)ASD(?!S)/g
但我们要做的是:

foo2("ASD")
// returns:
/(?:^|\s)ASD(?!\S)/g
简单:

var rx = /[W].*/;
var text = "Hello World"
text.replace( rx, "$1" );

如果你没有义务支持老浏览者,你最好使用财产。属性是IE10+。我必须支持旧浏览器。。。否则你是对的!