javascript извлича последния url без префикс

Търся да открия последния URL адрес от текст с помощта на javascript или mootools. Url може да бъде без префикс/схема

Работя върху автоматично разпознаване на URL като Facebook. Когато потребителят може да даде URL адрес www.example.com или с http://www.example.com или от тях трябва да бъдат открити от JavaScript. вижте stackoverflow открит URL, който е включен със схема без URL схема, не може да открие URL. В моя случай имам нужда и от двете.

Ето малко текст

'http://www.example.com www.example2.com'

Сега искам www.example2.com Ще бъде по-добре, ако получа пълен масив, съдържащ и двете http://www.example.com и www.example2.com

Търсих много, но не можах да намеря решение. Най-близки до моите изисквания бяха Въпрос относно валидирането на URL с Regex и Как да извлека URL от обикновен текст използвайки jQuery?

Всяка помощ се оценява високо.


person ARIF MAHMUD RANA    schedule 10.10.2012    source източник


Отговори (3)


като смесите информацията в тези 2 връзки: Как да Извличам URL от обикновен текст с помощта на jQuery? Откривам URL адреси в текст с JavaScript

Можем да получим това: http://jsfiddle.net/qQwGA/1/

Ако разбирам какво се опитвате да направите, това трябва да го покрие.

person Pyro979    schedule 10.10.2012
comment
Pyro979 благодаря, изглежда работи, нека проверя още малко. Още веднъж много, много благодаря за вашия отговор. - person ARIF MAHMUD RANA; 10.10.2012

Предвид вашия въведен низ, мисля, че просто искате да го разделите, като използвате интервали като разделител? .split(' ') ?

person Savageman    schedule 10.10.2012
comment
Savageman, това е само пример, моля, имайте предвид. Дадох и препоръки, които бяха много близки до моите нужди. Благодаря. - person ARIF MAHMUD RANA; 10.10.2012
comment
Моля, редактирайте въпроса си с повече подробности. Не мога да разбера по-добре, отколкото отговорих... - person Savageman; 10.10.2012

REGEX

/([^:\/?# ]+:)?(\/\/[^\/?# ]*)?[^?# ]+(\?[^# ]*)?(#\S*)?/gi


ПРИМЕРЕН КОД

var str = 'http://www.example.com www.example2.com scheme://username:password@domain:port/path?query_string#fragment_id';
var t = str.match(/([^:\/?# ]+:)?(\/\/[^\/?# ]*)?[^?# ]+(\?[^# ]*)?(#\S*)?/gi);

/* 
   t contains : 
   [ 
     "http://www.example.com",
     "www.example2.com",
     "scheme://username:password@domain:port/path?query_string#fragment_id"
   ]
*/


ДЕМО

http://jsfiddle.net/wvYTd/


ДИСКУСИЯ

  • Този регулярен израз ще намери всеки подниз, който прилича на URL във входен низ.
  • No validation is performed on any URL found. For instance, if the input string is 3aBadScheme://hostname, the regex will detect it as an URL. In this example, 3aBadScheme is invalid since a scheme MUST start with a letter.

    Excerpt from RFC3986

    (...)
    Имената на схемите се състоят от поредица от знаци, започваща с буква и последвана от произволна комбинация от букви, цифри, плюс ("+"), точка (".") или тире ("-" ).
    (...)

person Stephan    schedule 10.10.2012
comment
Обзалагам се, че това беше само примерен URL адрес ;)) - person Michal Klouda; 10.10.2012
comment
И персонализирането на отговора за нейните нужди ще бъде добро упражнение за OP :) - person Stephan; 10.10.2012
comment
Съгласен съм с @MichalKlouda. Това е само примерен текст, моля, имайте предвид. Дадох и препоръки, които бяха много близки до моите нужди. Благодаря. - person ARIF MAHMUD RANA; 10.10.2012
comment
Актуализирах регулярния израз и връзката jsfiddle. Отново, ако имате повече URL примери, валидни във вашия контекст, изпратете ги. - person Stephan; 10.10.2012
comment
@Stephan благодаря. Нека ми обясня малко повече. Работя върху автоматично разпознаване на URL като Facebook. Когато потребителят може да даде URL адрес, както казах www.example.com или с example.com всеки от тях трябва да бъдат открити от JavaScript. - person ARIF MAHMUD RANA; 10.10.2012
comment
@ARIFMAHMUDRANA Проверете новия ми отговор. Сега може да отговаря на вашите нужди. - person Stephan; 10.10.2012