这是我的示例字符串......
<span> </span><span class="citation_text" id="_148511159">Rawls, Wilson.
<i>Where the Red Fern Grows: The Story of Two Dogs and a Boy</i>. Garden City, NY: Doubleday, 1961. Print.</span>
我想删除<
和>
中的所有文字,但请保留<i>
和</i>
的文字。
我得到的最接近的是这段代码
string.replace(/<.[^i]+?>/g,"")
然而它会返回
<span class="citation_text" id="_148511159">Rawls, Wilson.
<i>Where the Red Fern Grows: The Story of Two Dogs and a Boy</i>. Garden City, NY: Doubleday, 1961. Print.
如何删除<
和>
中的最终范围?
谢谢!
更新:这就是我想要的输出。
Rawls, Wilson. <i>Where the Red Fern Grows:
The Story of Two Dogs and a Boy</i>. Garden City, NY: Doubleday, 1961. Print.
答案 0 :(得分:1)
注意:正如其他人所说,你不应该使用正则表达式来解析HTML 但是如果你真的想要一个正则表达式,那么除了
<i>
之外,还有一个删除标签。
/<\/?(?!i>)\w+.*?>/g
此表达式将匹配开始和结束标记。
您可以查看以下示例或this demo。
var str = '<span> </span><span class="citation_text" id="_148511159">Rawls, Wilson. <i>Where the Red Fern Grows: The Story of Two Dogs and a Boy</i>. Garden City, NY: Doubleday, 1961. Print.</span>';
var result = str.replace(/<\/?(?!i>)\w+.*?>/g, '');
console.log(result);
<\/?
匹配标记开头和可能的斜杠(用于结束标记)。(?!i>)
,则i>
会阻止匹配。<i>
和</i>
个标记。\w+
代表代码名称(例如span
)。.*?>
用于关闭标记之前跟随标记名称(或没有任何内容)的任何字符。