Вопрос по javascript, regex – Regex для преобразования URL в ссылки

-1

Я заимствовал регулярное выражение с этого сайта:http://daringfireball.net/2010/07/improved_regex_for_matching_urls это почти завершено, но я хочу соответствовать instancele.com
Я знаю, что stackoverflow - это не doyourhomework.com, но я долго думал, но безрезультатно. Вот скрипка для тестирования:http://jsfiddle.net/BGnMm/25/ и в конце вы можете увидеть, чтоemple.com не является ссылкой.

var reg=/\b((?:[a-z][\w-]+:(?:\/*)|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi;
var allurl="http:foo.com/blah_blah http://foo.com/blah_blah/ (Something like http://foo.com/blah_blah) http://foo.com/blah_blah_(wikipedia) http://foo.com/more_(than)_one_(parens) (Something like http://foo.com/blah_blah_(wikipedia)) http://foo.com/blah_(wikipedia)#cite-1 http://foo.com/blah_(wikipedia)_blah#cite-1 http://foo.com/unicode_(✪)_in_parens http://foo.com/(something)?after=parens http://foo.com/blah_blah. http://foo.com/blah_blah/. <http://foo.com/blah_blah> <http://foo.com/blah_blah/> http://foo.com/blah_blah, http://www.extinguishedscholar.com/wpglob/?p=364. http://✪df.ws/1234 rdar://1234 rdar:/1234 x-yojimbo-item://6303E4C1-6A6E-45A6-AB9D-3A908F59AE0E message://%[email protected]%3e http://➡.ws/䨹 www.c.ws/䨹 <tag>http://example.com</tag> Just a www.example.com link. http://example.com/something?with,commas,in,url, but not at end What about <mailto:[email protected]?subject=TEST> (including brokets). mailto:[email protected] bit.ly/foo “is.gd/foo/” WWW.EXAMPLE.COM http://www.asianewsphoto.com/(S(neugxif4twuizg551ywh3f55))/Web_ENG/View_DetailPhoto.aspx?PicId=752 http://www.asianewsphoto.com/(S(neugxif4twuizg551ywh3f55)) http://lcweb2.loc.gov/cgi-bin/query/h?pp/horyd:@field([email protected](thc+5a46634)) 6:00p filename.txt http://example.com/quotes-are-“part” ✪df.ws/1234 example.com example.com/";
document.write(allurl.replace(reg,"<a href='$1' >$1</a><br />"));
Я пытаюсь изменить регулярное выражение, так чтоemple.com совпадает user1365010
я просто сказал, что это не домашняя работа user1365010
Пожалуйста, включите ваш код в вопрос для дальнейшего использования. Я обновил его, но ссылки должны быть вторичными (что, если эта ссылка была удалена) ... Кроме того, что вы пытаетесь сделать? Justin Pihony
Если это домашнее задание, добавьте «домашнее задание». тег. arb

Ваш Ответ

2   ответа
0

var reg=/\b((?:[a-z][\w-]+:(?:\/*)|(?:www\d{0,3}[.])|[a-z0-9.\-]+[.][a-z]{2,4}\/{0,1})(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))*(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi;

соответствует вашим потребностям. www (anyNumber) был только что выставлен, чтобы появиться один или ноль раз. Извините за первый ответ, текстов не заметил.

Error: User Rate Limit Exceededjsfiddle.net/BGnMm/28 user1365010
2

|) после{2,4}\/т.е.

    var reg=/\b((?:[a-z][\w-]+:(?:\/*)|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/|)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi;

Есть кое-что, что вы должны понимать по этому поводу. Первая не захваченная группа,(?: … )ищет "индикаторы" URL-адресов. Одним из показателей, например, являетсяwww (до 3 цифр). Однако вы запрашиваете способ определения URLwithout any indicator at all, Итак, что мы сделали выше, так это то, что мы добавили пункт & quot;or an empty match, & Quot; как "действительный" индикатор.The consequence of this is that your regular expression is less selective now: all sorts of strings, not only example.com but also filename.txt, 3.141593, and omg...really are identified as URLs!  Единственный другой (легкодоступный) вариант - быть более избирательным в отношении суффиксов, например требуются конкретные суффиксы (com|org|net), но тогда это лишает общности исходного регулярного выражения, которое вообще не указывает никаких суффиксов.

Другими словами, вы, вероятно, столкнулись с ограничением логики, а не ограничением навыков написания регулярных выражений или самого языка регулярных выражений.

Error: User Rate Limit Exceededhttp://Error: User Rate Limit Exceededhttp://example.comError: User Rate Limit Exceeded

Похожие вопросы