0

我的目标是制作 html hastag,为此我需要用 # 将文本包装成

<a class="tag"><span class="hash">#</span>text</a>

我不想制作可以给我带#和@的单词的正则表达式,但是我在使用这样的 URL 时遇到了一些问题:http: //gitlab.com/#xxxhttps://medium.com/@erikdkennedy

我的示例字符串:

<p>Some text <span class="highlighted">#test</span><br />
<a href="http://gitlab.com/#xxx" target="_blank" class="link">gitlab.com/#xxx</a><br />
<code>some feature</code></p>

我的正则表达式是:

(?!.*(<mail-link|link))#([a-zA-Z0-9]+)

我得到 2 场比赛 #test 和最后一场 #xxx ( https://regex101.com/r/pXxIkf/1 )

我怎样才能得到唯一的测试,而不是在 href 定义中找到?

谢谢!

4

1 回答 1

1

尝试这个 :

(?<=\>)(?:[\s]*(?:#|@))([a-zA-Z0-9]+)

(?<=>) Positive Lookbehind 以确保>在主题标签之前存在。

(?:启动非捕获组。

[\s]*是否有空格。

(?:#|@)确保存在的非捕获组# or @

演示

于 2019-03-13T20:45:24.497 回答