rah*_*hul 3 html java regex jsp
我正在寻找一个正则表达式来从JSP中删除字符串中的所有HTML标记.
例1
sampleString = "test string <i>in italics</i> continues";
Run Code Online (Sandbox Code Playgroud)
例2
sampleString = "test string <i>in italics";
Run Code Online (Sandbox Code Playgroud)
例3
sampleString = "test string <i";
Run Code Online (Sandbox Code Playgroud)
HTML标记可能是完整的,部分的(没有关闭标记)或没有正确的起始标记(在第3个示例中缺少关闭角括号)本身.
提前致谢
使用正则表达式或解析器无法使用案例3.它可能代表合法内容.所以忘了它.
至于涵盖案例1和案例2的具体问题,只需使用HTML解析器即可.我最喜欢的是Jsoup.
String text = Jsoup.parse(html).text();
Run Code Online (Sandbox Code Playgroud)
而已.顺便说一句,它也是一个HTML清洁工,如果那是你真正想要的.
由于您使用的是JSP,因此您也可以使用JSTL <c:out>或fn:escapeXml()避免用户控制的HTML输入在HTML中内联(这可能会打开XSS漏洞).
<c:out value="${bean.property}" />
<input type="text" name="foo" value="${fn:escapeXml(param.foo)}" />
Run Code Online (Sandbox Code Playgroud)
然后不会解释HTML标记,而只是显示为纯文本.