假设我将推文存储为JS变量中的字符串...如何使用JavaScript RegEx从Tweet中提取URL?
如何使用JavaScript RegEx从推文中提取URL?
这应该是比从字符串中提取一个网址要容易得多,这是因为:
我会认为任何以http或www开头,以一个空格(或鸣叫结束)结束是一个URL。
假设我将推文存储为JS变量中的字符串...如何使用JavaScript RegEx从Tweet中提取URL?
如何使用JavaScript RegEx从推文中提取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中,请注意实体对象。
"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和帐户子域。
我试图检查的字符串是Twitter推文。所以,stringToCheck会是这样的:“检查真棒http://www.something.com”或“www.something.com太棒了!” – edt 2011-06-05 05:14:19
stringToCheck.match(/ \ b(([\ w-] +://?| www [。])[^ \ s()<>] +(?:\([\ w \ d] + \) |([^ [:PUNCT:] \ S] | /)))/);如果stringToCheck是一个URL,则返回true – 2011-06-06 00:14:39
你只需要一个匹配URL的JS正则表达式。有很多关于这个答案的问题。 – 2011-06-05 04:21:04
我环顾四周,但我没有看到任何好的答案。例如,这些不起作用:http://stackoverflow.com/questions/4043098/extract-url-from-string-with-javascript – edt 2011-06-05 16:19:53