2014-01-16 36 views
0

所以我有tweet url例如https://twitter.com/ESPNFC/status/423771542627966976。 這個網址在我的網站被自動解析到使用JavaScript正則表達式從url獲取用戶和推特ID

<a href="https://twitter.com/ESPNFC/status/423771542627966976">https://twitter.com/ESPNFC/status/423771542627966976</a> 

我需要匹配這一模式,並獲取用戶名和鳴叫ID。 我是那麼做的 /<a href="(http|https):\/\/twitter.com\/([^\/]*)\/status\/([^\/]*)">.+<\/a>/g。當每行有1條推文時,一切正常,但如果一行中有2條或更多推文,則該正則表達式會同時匹配它們並將它們分組爲一條,但我需要將它們分開。 實施例:

<a href="https://twitter.com/ESPNFC/status/423771542627966976">https://twitter.com/ESPNFC/status/423771542627966976</a> 

<a href="https://twitter.com/ESPNFC/status/423771542627966976">https://twitter.com/ESPNFC/status/423771542627966976</a> 

返回2個匹配項,但

<a href="https://twitter.com/ESPNFC/status/423771542627966976">https://twitter.com/ESPNFC/status/423771542627966976</a><a href="https://twitter.com/ESPNFC/status/423771542627966976">https://twitter.com/ESPNFC/status/423771542627966976</a> 

返回1個匹配包括兩個網址。我可以如何將它分開或者在解釋爲新行後將所有內容分開?

回答

0

最好避免使用正則表達式解析HTML。話雖如此,表達的問題是儘可能匹配的貪婪.+。相反,你可以使用.+?使其不合格(匹配儘可能少的字符)。或者您可以限制.匹配的內容,例如使用[^\s<>]+而不是.+

此外,您可能還想將這些[^\/]*更改爲[^\/"\s]*以使它們更有效。

+0

非常感謝,它的工作原理。 – user3130531

相關問題