我正在尝试使用正则表达式替换特定字符串。
var replace = {'<RAndom>': "random object"};
我正在使用动态正则表达式替换它,因为我有很多对象。
var tagsText = "<RAndom> hellow world";
var regex = new RegExp('\\b(' + Object.keys(replace).join('|') + ')\\b', 'g');
tagsText = tagsText.replace(regex, function(match) {
return replace[match] + match;
});
但它不起作用。我认为问题出在分号上,但我不确定。输出再次相同。
"<RAndom> hellow world"
有什么想法吗?
最佳答案
问题是在 &
和 ;
之前的每一侧都存在 \b
(单词边界)。 &
和 ;
都不是非单词字符,\b
不能在非单词字符前后断言。
您可以使用 \B
代替:
var regex = new RegExp('\\B(' + Object.keys(replace).join('|') + ')\\B', 'g');
然后
tagsText = tagsText.replace(regex, function(match) {
return replace[match] + match;
});
//=> "random object<RAndom> hellow world"
关于javascript - 在字符串javascript中替换使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36767422/