【问题标题】:JQuery How to replace strings inside a textarea?JQuery如何替换文本区域内的字符串?
【发布时间】:2012-07-19 20:23:25
【问题描述】:

当前文本区域:

<textarea id="event_content">
This text area could be full of information..www.london2012.com
And might contain upto 5 links that all need updating.
www.rio2016.org

Link already converted. this should be left.
<a href="http://www.thetimes.co.uk" target="_blank">www.thetimes.co.uk</a>
</textarea>

jquery 后所需的 Textarea:所有要清理/替换为标签和目标属性的链接

<textarea id="event_content">
This text area could be full of information
<a href="http://www.london2012.com" target="_blank">www.london2012.com</a>
And might contain upto 5 links that all need updating.
<a href="http://www.rio2016.org" target="_blank">www.rio2016.org</a>

Link already converted. this should be left.
<a href="http://www.thetimes.co.uk" target="_blank">www.thetimes.co.uk</a>
</textarea>

2012 年 7 月 21 日 - Ωmega's 代码工作得很好,谢谢,但可以通过保留已转换的链接来改进吗?

【问题讨论】:

  • 你原来的问题很简单,这有点棘手......看看使用正则表达式来识别文本正文中的 url,然后以类似于 Cristy 的答案的方式替换它们。这个问题可能会帮助stackoverflow.com/questions/5461702/regex-to-find-url-in-a-text
  • 是的,正则表达式会做到这一点。我可以在 php 中做到这一点,但不能在 jquery 中做到这一点? preg_replace('!(http://[a-z0-9_./?=&-]+)!i', '$1 ', $text." ") ;

标签: javascript jquery html regex replace


【解决方案1】:
var link = $("#event_content");
var text = link.html();
var linktext = '<a href="' + text + '" target="_blank">' + text + '</a>'
link.html(linktext);

【讨论】:

    【解决方案2】:
    $(function(){
        var old = $('#event_content').val();
    
        var news = '<a href="http://'+old+'" target="_blank">'+old+'</a>';
    
        $('#event_content').val(news);
    });
    

    请注意,&lt;a&gt; 不会显示在 textarea 中,而是会显示纯文本。

    演示:http://jsfiddle.net/3xEh2/1/

    【讨论】:

    • 非常感谢,但文本区域中还有其他信息,所以我更新了原始问题。
    【解决方案3】:

    fiddle

    这将替换所有链接并将其他文本也保留在那里。

    $(function(){
    var old = $('#event_content').val();
    var news = old.replace("www.london2012.com", '<a href="http://www.rio2016.com" target="_blank">www.rio2016.com</a>');   
    $('#event_content').val(news);
    });
    

    【讨论】:

      【解决方案4】:

      我相信你正在寻找这样的东西(点击here 来测试这个小提琴):

      $('#event_content').val(
        $('#event_content').val().replace(/\b(http(s|):\/\/|)(www\.\S+)/ig,
          "<a href='http\$2://\$3' target='_blank'>\$3</a>"));
      

      【讨论】:

      • 是的,我相信这就是我正在寻找的代码!可以调整您的正则表达式以不包含已转换的链接吗?
      • @Harry - 这必须是一个遍历所有链接的循环,并存储以前的匹配项和条件正则表达式替换。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      • 1970-01-01
      • 2020-03-24
      • 1970-01-01
      相关资源
      最近更新 更多