如何从整个文本中获取网站URL?

时间:2011-03-23 10:24:40

标签: jquery javascript-events jquery-selectors javascript-framework

我想从asp.net应用程序中的文本框中获取url链接 当我输入文本时,我有textarea,如果它包含www.google.comhttp://google.com之类的链接,那么我想从textarea值获取每个链接或第一个链接。
如何使用Jquery或javascript语言实现。 当我在textarea控件中输入单词/文本时,我想获得每个或第一个链接。 在这里,我写了一些代码。

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Test Page </title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <div class="innerWrap">
       <textarea autocomplete="off" id="txtUpdate" style="height: 48px; width: 408px;" > 
          </textarea>
     </div>
</div>
<script>
$(document).ready(function(){
    $('#txtUpdate').keyup(function() {    
        getURLfromText(jQuery.trim($(this).val()));
    });     
});
function getURLfromText(objTxt)
{
  // code
}
</script>
 </form>
</body>
</html>

请给我正确的解决方案。 也应该是我复制并粘贴一些文字的作品。 怎么可能。?

已修改

输入

Down to Earth: Tracy Caldwell Dyson www.google.com
After spending nearly six months in space, 
she is back on the ground, with two expeditions 
under her belt. http://bit.ly/dEpNHo

输出

Array linkarray[]=new Array();
linkarray[0]="www.google.com";
linkarray[1]="http://bit.ly/dEpNHo";

2 个答案:

答案 0 :(得分:2)

你应该在Javascript中使用正则表达式。从这里开始看例如: Detect URLs in text with JavaScript

答案 1 :(得分:1)

我在jsfiddle上发布了一个简短的例子。我认为这是你要找的那种东西?包含url的正则表达式可能接受了许多你不想要的值。您可以为您喜欢的表达式切换它。

脚本基本上取textarea的值,在所有空格上拆分,然后测试数组的每个值,看看它是否是使用正则表达式的URL。

http://jsfiddle.net/UkCPq/1/

HTML:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Test Page </title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div class="innerWrap">
                <textarea autocomplete="off" id="txtUpdate" style="height: 48px; width: 408px;" ></textarea>
            </div>
        </form>
        <p>Your urls, sir:</p>
        <ul id="theurls">
            <li>:)</li>
        </ul>
    </body>
</html>

Javacript:

$(document).ready(function() {
    $('#txtUpdate').keyup(function() {
        getURLfromText($.trim($(this).val()));
    });
});

function getURLfromText(objTxt) {
    var urlpatt = new RegExp(/[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi);
    var objArray = objTxt.split(/\s/g);
    $('#theurls').text('');
    $.each(objArray, function(key, value) {
        var result = value.match(urlpatt);
        if (result !== null) {
            $('<li>' + result + '</li>').appendTo('#theurls');
        }
    });
}