如何创建字符串“;替换所有“;作用
How to create a string "replace all" function?
我看过的每一篇文章或问题都说,只需使用:
str.replace(/yourstring/g, 'whatever');
但是我想用一个变量来代替"yourstring"。然后人们说,只要使用new RegExp(yourvar, 'g')
。问题是yourvar
可能包含特殊字符,我不希望它被当作正则表达式对待。
那么我们该如何正确地做到这一点呢?
示例输入:
'a.b.'.replaceAll('.','x')
期望输出:
'axbx'
您可以进行拆分和联接。
var str = "this is a string this is a string this is a string";
str = str.split('this').join('that');
str; // "that is a string that is a string that is a string";
来源http://cwestblog.com/2011/07/25/javascript-string-prototype-replaceall/
String.prototype.replaceAll = function(target, replacement) {
return this.split(target).join(replacement);
};
您可以使用以下方法转义yourvar
变量:
function escapeRegExp(text) {
return text.replace(/[-'[']'/'{'}'(')'*'+'?'.'''^'$'|]/g, "''$&");
}
XRegExp提供了一个用于转义字符串中正则表达式字符的函数:
var input = "$yourstring!";
var pattern = new RegExp(XRegExp.escape(input), "g");
console.log("This is $yourstring!".replace(pattern, "whatever"));
// logs "This is whatever"
解决方案1
RegExp.escape = function(text) {
return text.replace(/[-[']{}()*+?.,''^$|#'s]/g, "''$&");
}
String.prototype.replaceAll = function(search, replace) {
return this.replace(new RegExp(RegExp.escape(search),'g'), replace);
};
解决方案2
'a.b.c.'.split('.').join('x');
jsPerf测试
相关文章:
- 替换变量时,JavaScript字符串replace()不起作用
- getComputedStyle替换:currentStyle(IE8/7)不起作用
- 替换字符串的脚本;在某些网站上不起作用
- .clone().appendTo-替换不起作用的元素样式
- 为什么不'使用此JavaScript将文本替换为不起作用的链接
- jquery替换不起作用
- jQuery用点替换逗号不起作用
- .keyup() 上的非拉丁字符替换在快速键入时不起作用
- 替换 JavaScript 中出现的所有字符串不起作用
- 替换函数后的Javascript比较字符串不起作用
- 使用replace方法替换innerHTML以及在Javascript中不起作用的正则表达式
- 为什么javascript替换方法(没有regex)在angularjs表达式中不起作用来删除 
- :包含不区分大小写的解决方案在替换文本以突出显示时不起作用
- Javascript字符串替换不起作用
- I'我试图制作一个chrome查找和替换扩展,但它赢了;不起作用
- 如果我用fadeTogle替换fadeIn/fadeOut,为什么它不起作用
- 使用替换函数替换 XML 标记不起作用
- jQuery |字符串替换不起作用
- 字符串替换在javascript中不起作用(使用双引号)
- 全局替换不起作用,但简单的替换工作正常