我已经寻找了一个通用的解决方案,但只能找到人们特定问题的答案。
基本上,我想知道如何通常使用 .replace() 来替换字符串中任何类型的字符之间的项目,例如:
替换 abc 和 xyz 之间的所有文本,包括:abc text to be replaced xyz
或替换中间的所有文本,包括<img and />
例如:<img src="image.jpg" />
任何人都可以帮助我或为我指出一个好的方向吗?
谢谢!如果我需要澄清更多,请告诉我。
您要查找的内容称为正则表达式。有关更多信息,您可以访问以下网站: http ://www.regular-expressions.info/
请注意,正则表达式并非特定于 JavaScript。
对于您的具体示例:
string.replace(/abc.+xyz/,"abc"+newString+"xyz");
. 表示任何字符,+ 表示出现一次或多次。
如果您有不止一个替换要做,请尝试:
string.replace(/abc.+?xyz/g,"abc"+newString+"xyz");
g 代表一般,而 ? 是惰性量词,这意味着它将在字符串中下一次出现 xyz 时停止。
String.prototype.replaceBetween = function(opentag, closetag, replacement) {
var read_index = 0;
var open_index = 0;
var close_index = 0;
var output = '';
while ((open_index = this.indexOf(opentag, read_index)) != -1) {
output += this.slice(read_index, open_index) + opentag;
read_index = open_index + opentag.length;
if ((close_index = this.indexOf(closetag, read_index)) != -1) {
if (typeof replacement === 'function') {
output += replacement(this.substring(open_index + opentag.length, close_index - 1)) + closetag;
} else {
output += replacement + closetag;
}
read_index = close_index + closetag.length;
}
}
output += this.slice(read_index);
return output
};
var mydiv = document.getElementById("mydiv");
var html = mydiv.innerHTML;
html = html.replaceBetween("<b>", "</b>", "hello");
html = html.replaceBetween("<b>", "</b>", function(body) {
return body + ' world';
});
mydiv.innerHTML = html;
<div id="mydiv">The begining...<b>for</b> and <b>bar</b>... the end.</div>