Regex в Javascript для удаления ссылок - PullRequest
12 голосов
/ 06 июня 2009

У меня есть строка в JavaScript, и она включает в себя тег a с href. Я хочу удалить все ссылки и текст. Я знаю, как просто удалить ссылку и оставить внутренний текст, но я хочу полностью удалить ссылку.

Например:

var s = "check this out <a href='http://www.google.com'>Click me</a>. cool, huh?";

Я хотел бы использовать регулярное выражение, поэтому у меня осталось:

s = "check this out. cool, huh?";

Ответы [ 5 ]

17 голосов
/ 06 июня 2009

Это удалит все от <a до /a>:

mystr = "check this out <a href='http://www.google.com'>Click me</a>. cool, huh?";
alert(mystr.replace(/<a\b[^>]*>(.*?)<\/a>/i,""));

Это не совсем надежно, но, возможно, это поможет вам ...

12 голосов
/ 29 июля 2011

Просто чтобы уточнить, чтобы удалить теги ссылок и оставить все между ними нетронутыми, это двухэтапный процесс - удалите открывающий тег, затем удалите закрывающий тег.

txt.replace(/<a\b[^>]*>/i,"").replace(/<\/a>/i, "");

Рабочий образец:

<script>
 function stripLink(txt) {
    return txt.replace(/<a\b[^>]*>/i,"").replace(/<\/a>/i, "");
 }
</script>

<p id="strip">
 <a href="#">
  <em>Here's the text!</em>
 </a>
</p>

<p>
 <input value="Strip" type="button" onclick="alert(stripLink(document.getElementById('strip').innerHTML))">
</p>
3 голосов
/ 06 июня 2009

Регулярные выражения в принципе плохо разбирают HTML (см. . Можете ли вы привести некоторые примеры того, почему трудно анализировать XML и HTML с регулярным выражением? , почему). Что вам нужно, это HTML-парсер. См. Можете ли вы привести пример разбора HTML с вашим любимым парсером? для примеров использования различных парсеров.

1 голос
/ 06 июня 2009

Только что прокомментировал HTML-анализатор Джона Ресига . Может быть, это поможет в вашей проблеме.

1 голос
/ 06 июня 2009

Если вы хотите удалить только <a> элементы, хорошо подойдет следующее:

s.replace(/<a [^>]+>[^<]*<\/a>/, '');

Это должно работать для приведенного вами примера, но не будет работать для вложенных тегов, например, не будет работать с этим HTML:

<a href="http://www.google.com"><em>Google</em></a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...