Как извлечь URL из твита с помощью JavaScript RegEx? - PullRequest
2 голосов
/ 05 июня 2011

Предполагается, что твит хранится в виде строки в переменной JS ...

Как извлечь URL из твита с помощью JavaScript RegEx?

Это должно быть намного проще, чем извлечь URL из строки, потому что:

Я предполагаю, что все, что начинается с http или www и заканчивается пробелом (или концом твита), является URL.

Ответы [ 2 ]

11 голосов
/ 05 июня 2011

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

Шаблон соответствия ссылок

(?:<\w+.*?>|[^=!:'"/]|^)((?:https?://|www\.)[-\w]+(?:\.[-\w]+)*(?::\d+)?(?:/(?:(?:[~\w\+%-]|(?:[,.;@:][^\s$]))+)?)*(?:\?[\w\+%&=.;:-]+)?(?:\#[\w\-\.]*)?)(?:\p{P}|\s|<|$)

В качестве альтернативы, если вы контролируете, как статусы выбираются из Twitter, вы можете передать параметр include_entities в statuses / show (или любой другой метод, который его поддерживает, например statuses / user_timeline ) чтобы Твиттер выделил для вас ссылки, упоминания и хэштеги, например:

http://api.twitter.com/1/statuses/show/23918022347456512.json?include_entities=true

В полученном JSON обратите внимание на объект сущностей .

"entities":{"urls":[{"expanded_url":null,"indices":[27,53],"url":"http:\/\/tinyurl.com\/38wp7nt"}],"hashtags":[],"user_mentions":[]}

Теперь вы можете ссылаться на данные, возвращенные из Twitter, вместо того, чтобы анализировать их самостоятельно. Преимущества этого подхода в том, что вы переносите работу в Twitter, и вам никогда не придется беспокоиться о том, будет ли ваше регулярное выражение точно соответствовать Twitter.

0 голосов
/ 05 июня 2011
var stringToCheck = "http://www.something";

stringToCheck.match(/^http\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$/); // returns true if stringToCheck is a URL

При этом будут проверены двух или трехбуквенные TLD и учетные записи для поддоменов.

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