Не разбирайте HTML с регулярным выражением , но если вы настаиваете ...
Вы можете использовать следующее выражение регулярного выражения, если вы используете браузер, который позволяет просматривать вид сзади (см. Ниже)):
(?<![^\s])Java(?![^\s])(?!(.(?!<a))*<\/a>)
Regex Demo
По сути, мы проверяем, что нет ничего впереди или после Java
, кроме пробелов, а затем используем отрицательный прогноздля проверки текста в тегах.
Я заметил, что вы используете отрицательный lookbehind в своем исходном регулярном выражении - это на самом деле не поддерживается JavaScript до 2018 года, поэтому вы можете захотетьзнать об этом.Взгляды доступны только в браузерах , поддерживающих стандарт ECMA2018 .
Если вы хотите решить эту проблему без негативного взгляда, вы можете попробовать:
(?:\s$|^)Java(?![^\s])(?!(.(?!<a))*<\/a>)
Regex Demo
По сути, говоря, что не соответствует Java
, если ему предшествует что-либо, кроме пробела или начала строки (иначе, будет частью слова).