如何解决从多行字符串中删除前导特殊字符
正在处理 XSS 漏洞,其中我要求仅删除所有前导特殊字符。无需删除末尾或中间的特殊字符。允许使用字母数字,但不能以特殊字符开头。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main
{
public static void main(String args[]) {
String str= "**$*****Important****\n"
+ " document is not uploaded \n"
+ "%3Cscript%3E";
str = str.replaceAll("[^a-zA-Z0-9\\s]"," ");
System.out.println(str);
}
}
重要
但预期的输出是:
我该如何解决这个问题?
解决方法
您需要进行三项更改:
- 使用
^
将匹配锚定到字符串的开头。 - 将多个特殊字符与
+
匹配。 - 用
""
代替" "
替换匹配的子字符串:
str = str.replaceAll("^[^a-zA-Z0-9\\s]+","");
,
你可能需要
str = str.replaceAll("(?m)^[^a-zA-Z0-9\\s]+"," ");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。