Java 从字符串中删除斜体和粗体html标记?
删除粗体和斜体的安全方法是什么Java 从字符串中删除斜体和粗体html标记?,java,html,regex,Java,Html,Regex,删除粗体和斜体的安全方法是什么 String text = "<b>Remove <i>bold</i> and italics</b>"; System.out.println(text); text = text.replaceAll("\\<.*?\\>", ""); //remove all but only want to remove b and i? Syst
String text = "<b>Remove <i>bold</i> and italics</b>";
System.out.println(text);
text = text.replaceAll("\\<.*?\\>", ""); //remove all but only want to remove b and i?
System.out.println(text);
String text=“删除粗体和斜体”;
System.out.println(文本);
text=text.replaceAll(“\\”,“”)//删除所有但只想删除b和i?
System.out.println(文本);
而且,更具可扩展性(如果我想包括其他标记,如“strong”或“em”,并允许区分大小写的“b”与“b”等)?与其使用正则表达式解析HTML,不如使用类似
JSoup
库的东西,让您的生活更轻松,更具可扩展性。下面是一些示例代码
Document doc = Jsoup.parse(content);
Elements elements = doc.getElementsByTag("b");
for (Element pre : elements) {
pre.remove();
}
若要删除斜体,请将的“b”替换为的“i”
更新
我没有测试以下代码,但它可能会工作
JSoup允许像css选择器一样进行选择,因此类似于doc.select(“strong,em,b,i”)代码>应返回元素
您可以使用这个正则表达式:
代码:
String text = "<b>Remove <i>bold</i> and italics</b>";
text = text.replaceAll("<\\/?[bi]>", "");
System.out.println(text);
如果要匹配不区分大小写的,则可以使用(?i)
解释
您可以使用Jsoup
清除空白
<代码>空白
是可扩展的,以包括也将被忽略的属性
根据这里的javadoc
白名单定义允许通过哪些HTML(元素和属性)
清洁工。其他一切都被删除了
如果你需要让更多的人通过(请小心!),调整一个基础
白名单包括:
- addTags(java.lang.String…)
- addAttributes(java.lang.String、java.lang.String…)
- AddInforcedAttribute(java.lang.String、java.lang.String、java.lang.String)
- addProtocols(java.lang.String、java.lang.String、java.lang.String…)
在代码中:
String text = "<b>Remove <i>bold</i> and italics</b>";
System.out.println(text);
String doc = Jsoup.clean(text, new Whitelist());
System.out.println(doc);
String text=“删除粗体和斜体”;
System.out.println(文本);
字符串doc=Jsoup.clean(文本,新白名单());
系统输出打印项次(doc);
给出:
<b>Remove <em>bold</i> and italics</b>
Remove bold and italics
删除粗体和斜体
删除粗体和斜体
更安全的方法绝对不是使用正则表达式。为了安全起见,请使用HTM/XML解析器。顺便说一句,您的正则表达式正在删除所有HTML标记,而不仅仅是粗体、斜体等等@anubhava:在他的情况下,我相信正则表达式可以使用。请看,这仍然有点不安全,并且只有在输入HTML格式正确时才是正确的。如果HTML中缺少关闭
怎么办?thx,是否有某种白名单,我可以在其中指定“b”和“I”以及“em”和“strong”等,并且只替换一个?我如何能够一次替换所有的元素,而不是基于每个getElementsByTag()指定标记类型而进行n次迭代?是的,我喜欢这样!它足够明确和简单,特别是考虑到简单的输入。thx用于简洁准确的答案摘要!=)以下内容如何(如果\\不起作用)…text=text.replaceAll(“,”)@是的,你也可以这样用。在某些语言中(不同的regex-falour)/“意思是不同的,这就是为什么我也删掉了它。
<b>Remove <em>bold</i> and italics</b>
Remove bold and italics