【问题标题】:Hashtag RegExp in Javascript breaks links with anchors and HTML entitiesJavascript 中的 Hashtag RegExp 使用锚点和 HTML 实体断开链接
【发布时间】:2014-12-11 09:51:35
【问题描述】:

我正在尝试解析 Javascript (node.js) 中的主题标签。我对这些主题标签有一些要求:它们可以使用西里尔符号编写,不应破坏 HTML 实体,如 ' 和链接 (https://example.com/hacking#stage3)。

我在这个网站上阅读了很多示例,但没有一个对我有用:如果出现一个功能,那么其​​他功能就会中断。现在我被 URL 过滤困住了:消极的前瞻不能像我希望的那样工作,并且链接仍然被破坏。这是我当前的正则表达式:

(?!#[0-9])#([^#][a-zA-Z\d\u0400-\u04ff]+)

我在这里测试它:https://regex101.com/r/gN9fT3/4。它部分工作:链接已损坏。如何解决?我应该使用什么正则表达式或 JS 功能?

【问题讨论】:

    标签: javascript regex parsing hashtag


    【解决方案1】:

    您可以使用非单词边界\B

    \B#([a-zA-Z\u0400-\u04ff][a-zA-Z\d\u0400-\u04ff]*)
    

    另一种可能的方法是在放置在目标之前的捕获组中捕获您想要避免的所有内容,例如:

    (pattern for links)|#([a-zA-Z\u0400-\u04ff][a-zA-Z\d\u0400-\u04ff]*)
    

    因此,使用此模式,如果组 1 存在,则替换为 $1,如果不存在,则使用您想要的替换。 (别忘了现在主题标签是捕获组 2)

    【讨论】:

      【解决方案2】:

      使用 TNNSUKA.js 库,有更多功能可以解决您的问题。我在 lab.nyan.pw/sosi 上查看了它,你可以在这个页面上下载。

      【讨论】:

        猜你喜欢
        • 2014-03-14
        • 2016-03-03
        • 1970-01-01
        • 1970-01-01
        • 2014-05-24
        • 2010-11-27
        • 2020-09-06
        • 2016-02-20
        • 1970-01-01
        相关资源
        最近更新 更多