Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.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 为什么string.replace()不适用于包含括号的字符串?_Javascript_Regex - Fatal编程技术网

Javascript 为什么string.replace()不适用于包含括号的字符串?

Javascript 为什么string.replace()不适用于包含括号的字符串?,javascript,regex,Javascript,Regex,下面是将html粗体标记添加到我们传递的子字符串的函数 函数boldString(str,find){ var re=新的RegExp(查找“g”); 返回str.replace(re,“+find+”); } log(粗体字符串(“这是为了测试目的”,“测试”)); log(粗体字符串(“使用括号进行测试)”,“(括号)”),因为(和)(以及其他几个字符)在正则表达式中有特殊的含义,并且您没有对它们进行转义。您需要传入“\\(括号\\”)”:第一个反斜杠转义字符串文本中的第二个,以便字符

下面是将html粗体标记添加到我们传递的子字符串的函数

函数boldString(str,find){ var re=新的RegExp(查找“g”); 返回str.replace(re,“+find+”); } log(粗体字符串(“这是为了测试目的”,“测试”)); log(粗体字符串(“使用括号进行测试)”,“(括号)”),因为
(以及其他几个字符)在正则表达式中有特殊的含义,并且您没有对它们进行转义。您需要传入
“\\(括号\\”)”
:第一个反斜杠转义字符串文本中的第二个,以便字符串实际包含一个反斜杠;字符串中的反斜杠转义

例如:

函数boldString(str,find){ var re=新的RegExp(查找“g”); 返回str.replace(re,“+find+”); } log(粗体字符串(“这是为了测试目的”,“测试”)); log(粗体字符串(“使用括号进行测试)”,“\\(括号\\”),因为
(以及其他几个字符)在正则表达式中有特殊的含义,并且您没有对它们进行转义。您需要传入
“\\(括号\\”)”
:第一个反斜杠转义字符串文本中的第二个,以便字符串实际包含一个反斜杠;字符串中的反斜杠转义

例如:

函数boldString(str,find){ var re=新的RegExp(查找“g”); 返回str.replace(re,“+find+”); } log(粗体字符串(“这是为了测试目的”,“测试”));
log(粗体字符串(“使用括号进行测试)”,“\\(括号\\”)括号是正则表达式中的保留符号。例如,
+
*
[]
等,您会遇到同样的问题

在用它构造regexp之前,您需要先创建一个。(另外,最好使用
.replace()
s函数接受表单并使用实际匹配字符串。)

函数escapeRegExp(str){
返回str.replace(/[\-\[\]\/\{\\}(\)\*\+\?\.\\\^\$\\\\\\\\\\;]/g,“\$&”);
}
函数boldString(str,find){
var re=new RegExp(escapeRegExp(find),'g');
返回str.replace(re),函数(m){
返回“+m+”;
});
}

括号是正则表达式中的保留符号。例如,
+
*
[]
等,您会遇到同样的问题

在用它构造regexp之前,您需要先创建一个。(另外,最好使用
.replace()
s函数接受表单并使用实际匹配字符串。)

函数escapeRegExp(str){
返回str.replace(/[\-\[\]\/\{\\}(\)\*\+\?\.\\\^\$\\\\\\\\\\;]/g,“\$&”);
}
函数boldString(str,find){
var re=new RegExp(escapeRegExp(find),'g');
返回str.replace(re),函数(m){
返回“+m+”;
});
}

需要反斜杠。可能需要反斜杠的副本。
转义表达式xp(find)
的可能副本可以简化为
find。替换(/\W/g,\\$&”)
/[-\[\]\/\\\\\\\\\\\+\(\)\\\\\\\\\\\\\\\\\\\\\\$\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。该函数只是我链接的问题中的公认答案:)
escapeRegExp(find)
可以简化为
find.replace(/\W/g,“\\$&”)
/[\-\[\]\/\\\\\\\(\)\*\+\\\?\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。该函数只是我链接的问题中的公认答案:)
function escapeRegExp(str) {
  return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}

function boldString(str, find) {
    var re = new RegExp(escapeRegExp(find), 'g');
    return str.replace(re, function (m) {
      return '<b>' + m + '</b>';
    });
}