2010-10-28 9 views
3

это звучит как-то, что вы могли бы просто Google, но искали часы.извлечение url из строки с Javascript

в основном имеют эту строку я ajaxing с другого сайта

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

это выходит так, потому что им извлекая OnClick.

Я просто хочу извлечь URL из строки.

всякая помощь была бы принята с благодарностью.

---- редактировать ----

OK ЕСЛИ Я ИДУ HERE..http: //regexlib.com/RESilverlight.aspx regext онлайн тестер

и запустить это регулярное выражение.

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

на моей строке, он подчеркивает URL-адрес отлично .. я просто могу заставить его работать с JS?

+4

Он смотрит на меня, как строка * * является URL-адрес ... – Skilldrick

+0

Возможные контратип http://stackoverflow.com/questions/1141848/regex-to-match-url? – Robusto

ответ

3

, если она всегда с тире (я предполагаю, что вы хотите все до тире), вы можете использовать метод разделения:

var arr = split(val); 

ваши данные будут в обр [0]

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

+0

это возвращает пустой объект ?. Я думаю, что увидел этот код и попробовал его. – Alessandro

+0

то же, что-то сломанное пустым объектом – askon

-2

Edit: Вот еще одно решение, которое будет извлекать URL:

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")); 
+0

это просто возвращает true? – Alessandro

+0

Именно это возвращает только если оно соответствует Regex, а не частям. –

0

только в конечном итоге делает это

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

Регулярные выражения вне меня.

0

yourFunction.toString().split("'")[1] выполняет свою работу.

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

    var testUrl = text.match(urlRegex); 

    if (testUrl === null) { 

    return ""; 

     }else { 

    var urlImg = testUrl[0]; 

    return urlImg; 

    } 
Смежные вопросы