繁体   English   中英

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

[英]How to extract a URL from a Tweet with a JavaScript RegEx?

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

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

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

我假设任何以 http 或 www 开头并以空格(或推文结尾)结尾的东西都是 URL。

这是我用于从 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 中,注意实体object。

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

现在,您可以参考从 Twitter 返回的数据,而不必自己解析。 这种方法最好的事情是您将工作卸载到 Twitter,并且永远不必担心您的正则表达式是否会与 Twitter 的完全匹配。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM