我试图在Javascript(node.js)中解析主题标签。我对这些主题标签有一些要求:它们可以使用西里尔符号编写,不应该破坏像'
和链接(https://example.com/hacking#stage3
)这样的HTML实体。
我已经在这个网站上阅读了很多例子,但没有一个对我有用:如果出现一个特征,那么其他休息。现在我一直坚持使用URL过滤:负面预测不会按照我的意愿工作,链接仍然会被破坏。这是我现在的正则表达式:
(?!#[0-9])#([^#][a-zA-Z\d\u0400-\u04ff]+)
我在这里测试它:https://regex101.com/r/gN9fT3/4。它部分工作:链接被破坏。怎么解决?我应该使用什么正则表达式或JS功能?
答案 0 :(得分: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)
答案 1 :(得分:-1)
使用TNNSUKA.js lib,您的问题有更多功能。我在lab.nyan.pw/sosi上看了lib,你可以在这个页面上下载。