我需要一个正则表达式来替换整个单词。
我能够到达这里。
示例
var test = "abc.com abc.com/help abc.com";
var content = "abc.com";
var replaceContent = "xyz";
var replaceRegexp = new RegExp("\\b" +content+ "\\b","g");
test.replace(replaceRegexp,replaceContent);
越野xyz xyz/help xyz
但我想要输出xyz abc.com/help xyz
。
答案 0 :(得分:1)
您不需要那个
的正则表达式"abc.com abc.com/help abc.com".split(' ').reduce(function (str, word, i) {
return str + (i ? ' ' : '') + (word == 'abc.com' ? 'xyz' : word);
}, '');
请记住,如果使用RegExp,则必须转义\.
之类的特殊字符。
答案 1 :(得分:0)
菜鸟和直接方法
var result = test.replace(/abc.com/g,"xyz").replace("xyz/help","abc.com/help");
答案 2 :(得分:0)
似乎你想要替换" abc.com"只有在空格,字符串的开头和结尾包围时才会出现:
var s = "abc.com abc.com/help abc.com";
s.replace(/(^| )abc\.com( |$)/g, '$1g$2'); // g abc.com/help g
您可以创建一个函数来执行上述操作:
function replaceWholeWord(s, p, w) {
p = p.replace(/([\\\/\.])/g,'\\$1');
var re = new RegExp('(^| )' + p + '( |$)','g');
return s.replace(re, '$1' + w + '$2');
}
console.log(replaceWholeWord(' abc.com abc.com/help abc.com',' abc.com /',' g') );
但是你必须引用某些字符,因此它们被视为普通字符,而不是正则表达式搜索术语(例如abc.com变为abc \ .com,foo / bar变为foo \ / bar等)。我只引用了\,/和句点(。)。
答案 3 :(得分:0)
如果问题是/
,那么您可以尝试:
var test = "abc.com abc.com/help abc.com abc.com?test abc.com";
var content = "abc\\.com";
var replaceContent = "xyz";
var replaceRegexp = new RegExp("\\b" + content + "(?!/)\\b","g");
test = test.replace(replaceRegexp,replaceContent);
console.log(test); // xyz abc.com/help xyz xyz?test xyz
如果问题是您希望content
没有后跟另一个字符串,那么您可以尝试:
var test = "abc.com something/abc.com abc.com/help abc.com abc.com?test abc.com";
var content = "abc\\.com";
var replaceContent = "xyz";
var replaceRegexp = new RegExp("\\b" + content + "(?=\\s|$)","g");
test = test.replace(replaceRegexp,replaceContent);
console.log(test); // xyz something/xyz abc.com/help xyz abc.com?test xyz
如果问题是您希望content
不属于另一个字符串,那么您可以尝试:
var test = "abc.com something/abc.com abc.com/help abc.com abc.com?test abc.com";
var content = "abc\\.com";
var replaceContent = "xyz";
var replaceRegexp = new RegExp("(\\s|^)" + content + "(?=\\s|$)","g");
test = test.replace(replaceRegexp, '$1' + replaceContent);
console.log(test); // xyz something/abc.com abc.com/help xyz abc.com?test xyz
更新:最后,正如RobG所述,.
中的content
必须转义
如果只有.
,那么一个简单的content.replace('.', '\\.')
将完成工作..或content.replace(/\./g, '\\$&')
如果有多个
要获得更全面的方法,请尝试以下方法:
var test = "abc.com abcdcom something/abc.com abc.com/help abc.com abc.com?test abc.com";
var content = "abc.com";
var replaceContent = "xyz";
var rQuantifiers = /[-\/\\^$*+?.()|[\]{}]/g;
var replaceRegexp = new RegExp("(\\s|^)" + content.replace(rQuantifiers, '\\$&') + "(?=\\s|$)","g");
test = test.replace(replaceRegexp, '$1' + replaceContent);
console.log(test); // xyz abcdcom something/abc.com abc.com/help xyz abc.com?test xyz