Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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/Jquery-正则表达式中的变量_Javascript_Jquery_Regex_Variables - Fatal编程技术网

Javascript/Jquery-正则表达式中的变量

Javascript/Jquery-正则表达式中的变量,javascript,jquery,regex,variables,Javascript,Jquery,Regex,Variables,数组replaceThis是用户生成的,因此我无法写入常量正则表达式规则。 但是如何创建正则表达式规则呢 有什么好办法吗 var replaceThis = new Array(); replaceThis[0] = ':)'; replaceThis[1] = 'XD'; replaceThis[2] = '-.-'; replaceThis[3] = 'hello world'; replaceThis[3] = ' a '; replaceThis[3] = ' B ';

数组
replaceThis
是用户生成的,因此我无法写入常量正则表达式规则。
但是如何创建正则表达式规则呢
有什么好办法吗

var replaceThis = new Array();
replaceThis[0] = ':)';
replaceThis[1] = 'XD';
replaceThis[2] = '-.-';
replaceThis[3] = 'hello world';
replaceThis[3] = ' a ';        
replaceThis[3] = ' B ';                

var message = 'text text :) text text -.- and hello world XD and text a btext B text text';
$.each(replaceThis, function(i)
{
    var regex = new RegExp (" ??? ","gi");
    message = message.replace(regex,'<span class="blue">'+????+'</span>');
});

$('body').append(message+'<hr/>');
var replaceThis=new Array();
replaceThis[0]=':)';
replaceThis[1]=“XD”;
替换此[2]='-.-';
replaceThis[3]=“你好世界”;
replaceThis[3]=“a”;
replaceThis[3]=“B”;
var message='text text:)text text-.-和hello world XD和text a btext B text';
$.each(替换此函数,函数(i)
{
var regex=新的RegExp(“???”,“gi”);
message=message.replace(regex,“+?????+”);
});
$('body').append(message+'
');
操场:

提前谢谢
杰米

你需要避开正则表达式的特殊字符

String.prototype.escapeRegExp = function() {
  return this.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1");
}
然后像这样使用它:

$.each(replaceThis, function(i, data){
    var regex = new RegExp(data.escapeRegExp(),"gi");
    message = message.replace(regex, '<span class="blue">$&</span>'); 
});
$。每个(替换此函数,函数(i,数据){
var regex=new RegExp(data.escapeRegExp(),“gi”);
message=message.replace(regex,$&');
});

你需要避开正则表达式的特殊字符

String.prototype.escapeRegExp = function() {
  return this.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1");
}
然后像这样使用它:

$.each(replaceThis, function(i, data){
    var regex = new RegExp(data.escapeRegExp(),"gi");
    message = message.replace(regex, '<span class="blue">$&</span>'); 
});
$。每个(替换此函数,函数(i,数据){
var regex=new RegExp(data.escapeRegExp(),“gi”);
message=message.replace(regex,$&');
});

您需要做什么?将这些字符串包装在一个
?因此您需要转义您的正则表达式,以便
新的正则表达式(“(:)”,“gi”)
不会中断?您需要做什么?将这些字符串包装在一个
?因此您需要转义您的正则表达式,以便
newregexp((:)“,“gi”)
不会中断?