регулярное выражение для хэштега / упоминания в href - PullRequest
0 голосов
/ 13 марта 2019

Моя цель - сделать html hastag, для этого мне нужно обернуть текст с # в

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

Я не хочу делать регулярное выражение, которое может дать мне слова с # и @, но у меня есть некоторые проблемы с URL-адресами, такими как: http://gitlab.com/#xxx или https://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 и last #xxx (https://regex101.com/r/pXxIkf/1)

Как я могу получить только тест и не найти в определении href?

Спасибо!

1 Ответ

1 голос
/ 13 марта 2019

Попробуйте это:

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

(? <=>) Позитивный взгляд назад, чтобы убедиться, что перед хэштегом стоит >.

(?: начало группы без каптурига.

[\ s] * есть пробел или нет.

(?: # |@) некаптуриговая группа, которая удостоверилась, что либо # or @

DEMO

...