如何使用JavaScript RegEx从Tweet中提取URL?

时间:2011-06-05 04:18:26

标签: javascript regex twitter

假设我将推文存储为JS变量中的字符串......

如何使用JavaScript RegEx从推文中提取URL?

这比从字符串中提取URL要容易得多,因为:

我会假设任何以http或www开头并以空格(或推文结尾)结尾的内容都是网址。

2 个答案:

答案 0 :(得分:11)

这是我用来从Twitter状态中提取链接的正则表达式之一。

链接匹配模式

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

或者,如果您控制从Twitter获取状态的方式,则可以将include_entities参数传递给statuses/show(或任何其他支持它的方法,例如statuses/user_timeline)让Twitter为你打破链接,提及和标签,如下所示:

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完全匹配。

答案 1 :(得分:0)

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和子域帐户。