【问题标题】:(jQuery, RegEx) Remove from the beginning to some word(jQuery, RegEx) 从开头删除某个单词
【发布时间】:2012-07-06 21:16:34
【问题描述】:

需要一个简单的正则表达式进行文本替换:从开头到唯一已知的单词。

之前:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。

之后:

elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。

唯一的静态词是adipisicing,所以其他一切都是可变的。

我用过这个正则表达式:

$(this).html($(this).html().replace(/^[^adipisicing]*(adipisicing)/,''));

工作正常..但我确信有更短的方法!

【问题讨论】:

  • 该正则表达式与示例文本中的任何内容都不匹配。

标签: jquery regex dom replace


【解决方案1】:

使用这个正则表达式^.*adipisicing

【讨论】:

    【解决方案2】:

    你可以这样尝试:

    var tmphtml = $(this).html();
    var word = "adipisicing";
    $(this).html( tmphtml.substr(tmphtml.indexOf(word)+word.length) );
    

    【讨论】:

      【解决方案3】:

      没有正则表达式:

      var word = "adipisicing";
      
      $(this).html(function(i, val) {
          return val.substring(val.indexOf(word) + word.length);
      });
      

      使用正则表达式:

      $(this).html(function(i, val) {
          return val.replace(/^.*\badipisicing\b/, "");
      });
      

      这里\b 将绑定一个单词而不是一组字符。

      演示: http://jsfiddle.net/rVuh7/

      【讨论】:

      • @Engineer 是的,我首先也想到了这个选项 :)
      【解决方案4】:

      试试这个:http://jsfiddle.net/Kh7aD/

      因为 indexOf 已经在其中一篇文章中,请尝试使用 split。

      希望对您有所帮助!

      代码

      var str = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";
      
      
      str = str.split('adipisicing')[1];
      

      【讨论】:

      • 很好,但是如果一个词不存在怎么办?我会添加支票或||。另一件事,如果有两个词怎么办? :)
      猜你喜欢
      • 2011-11-27
      • 2011-03-27
      • 1970-01-01
      • 2012-09-30
      • 2014-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多