我有一个字符串
[0, 1, 2, 3, 4]
我需要在主字符串(str)中找到下面字符串(find)的所有出现。
var str = "{CPARTY_<BPARTY+_DPARTY}";
并将其替换为以下字符串。
var find = "{CPARTY_<BPARTY+_DPARTY}";
这不起作用。这意味着没有更换。没有例外。
var replace = "<span><div ng-click='myClick($event)' title='null' data-token='CPARTY_<BPARTY+_DPARTY' style='display: inline;'>{CPARTY_<BPARTY+_DPARTY}</div></span>";
这很有效。
str = str.replace(new RegExp(find, 'g'), replace);
我想使用替换所有语法。我已经意识到它与特殊字符有关&lt;和$ lt;如果我没有&lt;和$ lt; ,没有问题。我知道这是一件非常愚蠢但却无法解决的问题。
的jsfiddle https://jsfiddle.net/848c1as4/9/
答案 0 :(得分:5)
正则表达式中有几个字符具有特殊含义。例如,+
和(
。在RegExp中使用它之前,您必须通过转义来对待它们。
var str = "{CPARTY_<BPARTY+_DPARTY}";
var find = "{CPARTY_<BPARTY+_DPARTY}";
var safeFind = find.replace(/([\/\,\!\\\^\$\{\}\[\]\(\)\.\*\+\?\|\<\>\-\&])/g,"\\$&");
var replace = "<span><div ng-click='myClick($event)' title='null' data-token='CPARTY_<BPARTY+_DPARTY' style='display: inline;'>{CPARTY_<BPARTY+_DPARTY}</div></span>";
str = str.replace(new RegExp(safeFind, 'g'), replace);
(source)
答案 1 :(得分:1)