使用Javascript从字符串中提取url

时间:2010-10-28 12:54:29

标签: javascript

这听起来像你可以谷歌,但一直在寻找几个小时。

基本上有这个字符串我是从另一个网站

ajaxing
'function onclick(event) { toFacebook("http://www.domain.com.au/deal/url-test?2049361208?226781981"); }'

它就像是因为即时提取onclick。

我只是想从字符串中提取网址。

任何帮助将不胜感激。

----编辑----

好的,如果我去这里..http://regexlib.com/RESilverlight.aspx regext在线测试仪

并运行此正则表达式。

(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?

在我的字符串上,它完美地突出显示了网址..我可以让它与JS一起运行吗?

6 个答案:

答案 0 :(得分:3)

如果它总是带有破折号(我假设你想要破折号之前的所有东西),你可以使用分割方法:

var arr = split(val);

您的数据将在arr [0]

答案 1 :(得分:0)

您可以在javascript中使用这些功能:

function parseUrl1(data) {
var e=/^((http|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+\.[^#?\s]+)(#[\w\-]+)?$/;

if (data.match(e)) {
    return  {url: RegExp['$&'],
            protocol: RegExp.$2,
            host:RegExp.$3,
            path:RegExp.$4,
            file:RegExp.$6,
            hash:RegExp.$7};
}
else {
    return  {url:"", protocol:"",host:"",path:"",file:"",hash:""};
}
}

function parseUrl2(data) {
var e=/((http|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+\.[^#?\s]+)(#[\w\-]+)?/;

if (data.match(e)) {
    return  {url: RegExp['$&'],
            protocol: RegExp.$2,
            host:RegExp.$3,
            path:RegExp.$4,
            file:RegExp.$6,
            hash:RegExp.$7};
}
else {
    return  {url:"", protocol:"",host:"",path:"",file:"",hash:""};
}
}

参考文献:http://lawrence.ecorp.net/inet/samples/regexp-parse.php

答案 2 :(得分:0)

刚刚结束这个

$a.substring($a.indexOf("http:"), $a.indexOf("?"))

正则表达式超出了我的范围。

答案 3 :(得分:0)

yourFunction.toString().split("'")[1]完成这项工作。

答案 4 :(得分:0)

 var urlRegex = /(http?:\/\/[^\s]+)/g;

    var testUrl = text.match(urlRegex);

    if (testUrl === null) {

    return "";

      }else {

    var urlImg = testUrl[0];

    return urlImg;

     }

答案 5 :(得分:-2)

修改 这是另一个解压缩网址的解决方案:

var function = 'function onclick(event) { toFacebook("http://www.domain.com.au/deal/url-test?2049361208?226781981"); }'
function.match(/(http:[^"]+)/)[0]

旧答案: 使用正则表达式:

javascript regex to extract anchor text and URL from anchor tags

var url_match = /https?:\/\/([-\w\.]+)+(:\d+)?(\/([\w/_\.]*(\?\S+)?)?)?/;

alert(url_match.test("http://stackoverflow.com"));