使用正则表达式从字符串中删除href标记

时间:2015-08-20 17:04:11

标签: javascript regex

嘿,这可能是在其他地方被问过,但我看不到它。

基本上我只是试图在javascript中使用正则表达式从字符串中删除a标签。

所以我有这个:

<a href="www.google.com">This is google</a>

我希望输出只是&#34;这是google&#34;。 如何使用正则表达式在javascript中完成? 在此先感谢!!

解决方案:

好的,我的老板提供的解决方案如下:

最好的方法是分两部分。一种是删除所有结束标签。那么你将要专注于删除开始标记。应该像以下一样简单:

/<a\s+.*?>(.*)<\/a>/

用。*?是match / anything /

的非贪婪版本

4 个答案:

答案 0 :(得分:2)

根本不应该使用正则表达式,但是像这样:

&#13;
&#13;
var a = document.querySelectorAll('a');
var texts = [].slice.call(a).map(function(val){
   return val.innerHTML;
});
console.log(texts);
&#13;
<a href="www.google.com">this is google</a>
&#13;
&#13;
&#13;

如果您只有一个包含多个<a href...>的字符串,则可以先创建一个元素

&#13;
&#13;
var a_string = '<a href="www.google.com">this is google</a><a href="www.yahoo.com">this is yahoo</a>',
el = document.createElement('p');
el.innerHTML = a_string;
var a = el.querySelectorAll('a');
var texts = [].slice.call(a).map(function(val){
   return val.innerHTML;
});
console.log(texts);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我不知道你的情况,但是如果你使用的是javascript,你可以使用innerHTML来获取元素的内部。因此,element.innerHTML可能会输出This is google

理由是Regex真的isn't meant to parse HTML.

如果你真的想要Regexp,请点击此处:

pattern = />(.*)</;
string  = '<a href="www.google.com">This is google</a>';
matches = pattern.exec(string);
matches[1] => This is google

这会使用匹配组来获取><中的内容。这不适用于所有情况,我保证。

答案 2 :(得分:0)

使用lookahead尝试此操作。获取第一个捕获组。

(?=>).([^<]+)

检查Demo

答案 3 :(得分:-1)

使用捕获组的另一种方法。所以,你基本上匹配所有,但只抓一个结果:

    var re = /<a href=.+>(.+)<\/a>/; 
    var str = '<a href="http://www.somesite.com">this is google</a>';
    var m;

    if ((m = re.exec(str)) !== null) {
        if (m.index === re.lastIndex) {
            re.lastIndex++;
        }

    }
console.log(m[1]);

https://regex101.com/r/rL0bT6/1注意:由regex101创建的代码。

演示:http://jsfiddle.net/ry83mhwc/