嘿,这可能是在其他地方被问过,但我看不到它。
基本上我只是试图在javascript中使用正则表达式从字符串中删除a标签。
所以我有这个:
<a href="www.google.com">This is google</a>
我希望输出只是&#34;这是google&#34;。 如何使用正则表达式在javascript中完成? 在此先感谢!!
解决方案:
好的,我的老板提供的解决方案如下:
最好的方法是分两部分。一种是删除所有结束标签。那么你将要专注于删除开始标记。应该像以下一样简单:
/<a\s+.*?>(.*)<\/a>/
用。*?是match / anything /
的非贪婪版本答案 0 :(得分:2)
根本不应该使用正则表达式,但是像这样:
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;
如果您只有一个包含多个<a href...>
的字符串,则可以先创建一个元素
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;
答案 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)
答案 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创建的代码。