我想在Javascript中使用String.replace执行字符串的全局替换.
在文档中,我读到我可以使用/ g执行此操作,例如;
var mystring = mystring.replace(/test/g, mystring);
这将取代mystring内的所有事件.表达式没有引号.
但如果我有一个变量可以找到,我怎么能没有引号?
我尝试过这样的事情:
var stringToFind = "test";
//第一次尝试
mystring = mystring.replace('/' + stringToFind + '/g', mystring);
//第二次尝试,根本没有多大意义
mystring = mystring.replace(/stringToFind/g, mystring);
但他们不起作用.有任何想法吗?
var mystring = "hello world test world"; var find = "world"; var regex = new RegExp(find, "g"); alert(mystring.replace(regex, "yay")); // alerts "hello yay test yay"
如果你需要这个功能
replaceGlobally(original, searchTxt, replaceTxt) { const regex = new RegExp(searchTxt, 'g'); return original.replace(regex, replaceTxt) ; }
对于正则表达式,new RegExp(stringtofind, 'g');
.但.如果'find'包含正则表达式中特有的字符,它们将具有其regexy含义.所以如果你试图替换'.' 在'abc.def'和'x'中,你得到'xxxxxxx' - 哎呀.
如果你想要的只是一个简单的字符串替换,那么就不需要正则表达式了!这是普通的字符串替换习语:
mystring= mystring.split(stringtofind).join(replacementstring);
正则表达式比字符串搜索慢得多.因此,使用转义搜索字符串创建正则表达式不是最佳方式.即使循环使用字符串也会更快,但我建议使用内置的预编译方法.
这是快速全新的字符串替换快速而简洁的方法:
sMyString.split(sSearch).join(sReplace);
就是这样.
String.prototype.replaceAll = function (replaceThis, withThis) { var re = new RegExp(RegExp.quote(replaceThis),"g"); return this.replace(re, withThis); }; RegExp.quote = function(str) { return str.replace(/([.?*+^$[\]\\(){}-])/g, "\\$1"); }; var aa = "qwerr.erer".replaceAll(".","A"); alert(aa);
silmiar帖子