繁体   English   中英

使用JavaScript正则表达式从网址获取用户和推特ID

[英]getting user and tweet ID from url using JavaScript regex

所以我有推特网址,例如https://twitter.com/ESPNFC/status/423771542627966976 我网站上的这个网址会自动解析为

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

我需要匹配此模式,还需要获取用户名和tweet ID。 我是通过/<a href="(http|https):\\/\\/twitter.com\\/([^\\/]*)\\/status\\/([^\\/]*)">.+<\\/a>/g 当我每行有1条tweet时,一切正常,但是如果一行中有2条或更多条tweet,则该正则表达式同时匹配它们并将它们分组为一个,但是我需要将它们分开。 例:

<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个匹配,包括两个网址。 如何将其分隔,或将例如所有内容解释为换行符?

尽可能避免使用正则表达式解析HTML。 话虽如此,表达的问题是贪婪的.+ ,它将尽可能地匹配。 相反,您可以使用.+? 使它变得不贪婪(匹配尽可能少的字符)。 或者您可以限制什么. 匹配,例如使用[^\\s<>]+代替.+

另外,您可能想将那些[^\\/]*更改为[^\\/"\\s]*以使其更有效。

暂无
暂无

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

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