JQuery:如何在某些字符之间替换所有字符?

时间:2012-06-13 23:47:24

标签: jquery replace

我一直在寻找一个通用的解决方案,但只找到人们特定问题的答案。

基本上,我想知道如何通常使用.replace()来替换字符串中任何类型字符之间的项目,例如:

替换其间的所有文本,包括abc和xyz,例如:abc text to be replaced xyz

或替换<img and />之间的所有文字,例如:<img src="image.jpg" />

任何人都可以帮助我,或者指出我对此有好感的方向吗?

谢谢!如果我需要澄清更多,请告诉我。

2 个答案:

答案 0 :(得分:4)

您正在寻找的是正则表达式。有关更多信息,您可以访问以下网站: http://www.regular-expressions.info/

请注意,正则表达式并非特定于JavaScript。

对于您的具体示例:

string.replace(/abc.+xyz/,"abc"+newString+"xyz");

。表示任何字符,+表示一个或多个出现。

如果您要进行多次替换,请尝试:

string.replace(/abc.+?xyz/g,"abc"+newString+"xyz");

g代表一般,和?是懒惰的量词,意味着它将在字符串中的下一个xyz出现时停止。

答案 1 :(得分:3)

    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>