Если вы хотите, чтобы путь был указан только в URL-адресе, укажите ссылку на путь с привязки, которую вы щелкнули. Вы также не должны использовать атрибуты для определения обработчика кликов.
$('a').on('click', function (evt) {
evt.preventDefault()
var path = hideref(this.pathname);
console.log(path);
//window.location.href = path;
});
function hideref(strUrl) {
return "https://example.com/?q=" + encodeURIComponent(strUrl);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="https://example.com/post/1">link 1</a>
Стандартная правовая оговорка применяется: Парсинг HTML с регулярными выражениями не идеален. Успех зависит от отмеченности входа на познаковом уровне. Если Вы не можете гарантировать это, regex не сделает Правильную Вещь в какой-то момент.
Сказав, что:
<a\b[^>]*>(.*?)</a> // match group one will contain the link text
Я - большой поклонник regexes, но это не правильное место для использования их.
Используйте реальный синтаксический анализатор HTML.
Я Погугленный для синтаксического анализатора HTML PHP и найденный этим.
Если Вы знаете, что работаете с XHTML, то Вы могли использовать стандартный синтаксический анализатор XML PHP.
Regex, черная магия, снова :)
Я нашел один деликатный вопрос об общем regex. Там некоторые интересные ссылки, где Вы найдете очень общий regexpressions как Ваш.
Захват HTML-ТЭГОВ
<TAG\b [^>]> (.?) Проанализируйте это регулярное выражение с соответствиями RegexBuddy открытие и заключительная пара определенного HTML-тэга. Что-либо между тегами получено в первую обратную ссылку. Вопросительный знак в regex делает звезду ленивой, чтобы удостовериться, что это останавливается перед первым закрывающим тэгом, а не прежде чем последнее, как жадная звезда сделало бы. Этот regex не будет правильно соответствовать тегам, вложенным в себе, как в onetwoone.
<([A-Z][A-Z0-9]) \b [^>]> (.*?) Анализируют это регулярное выражение с RegexBuddy, будет соответствовать открытию и заключительной паре любого HTML-тэга. Обязательно выключите чувствительность к регистру. Ключ в этом решении является использованием обратной ссылки \1 в regex. Что-либо между тегами получено во вторую обратную ссылку. Это решение не будет также соответствовать тегам, вложенным в себе.
Иначе: Просмотрите эту ссылку: ключевое слово "ссылка". Существуют некоторые интересные подходы для фильтрации ссылок.
Я надеюсь, что это помогает :)
Удачи!
<a\s*(.*)\>(.*)</a>
<a href="http://www.stackoverflow.com">Go to stackoverflow.com</a>
1$ = href = "www.stackoverflow.com"
2$ = переходят к stackoverflow.com
Я ответил на подобный вопрос для разделения всего кроме теги здесь
Хорошо.. Используя регулярные выражения не прекрасно, но в жемчуге regexp,
m!<a .*?>(.*?)</a>!i
должен дать Вам название первой ссылки на ту строку в группе соответствия один, игнорируя регистр.
Ограничения:
Вы могли работать вокруг этого путем присоединения ко всем строкам в одну строку и затем разделить ее на массив (или несколько строк), использование ссылки запускается как разделитель.