【问题标题】:getting user and tweet ID from url using JavaScript regex使用 JavaScript 正则表达式从 url 获取用户和推文 ID
【发布时间】:2014-02-05 07:59:20
【问题描述】:

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

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

我需要匹配此模式并获取用户名和推文 ID。 我是这样做的 /&lt;a href="(http|https):\/\/twitter.com\/([^\/]*)\/status\/([^\/]*)"&gt;.+&lt;\/a&gt;/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 个匹配项,包括两个 url。如何将它或解释为新行之后的所有内容分开?

【问题讨论】:

    标签: javascript regex twitter


    【解决方案1】:

    尽可能避免使用正则表达式解析 HTML。话虽如此,您表达的问题是贪婪的.+,它将尽可能匹配。相反,您可以使用 .+? 使其变得不贪心(匹配尽可能少的字符)。或者您可以限制 . 匹配的内容,例如使用 [^\s&lt;&gt;]+ 而不是 .+

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

    【讨论】:

      猜你喜欢
      • 2017-01-01
      • 2013-01-05
      • 2011-05-31
      • 2012-05-11
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多