簡體   English   中英

從多行字符串中刪除前導特殊字符

[英]Remove leading special characters from multiline string

處理 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);  

 }  
}

上面的代碼給出的輸出為:

重要的

但預期的輸出是:

重要****文件未上傳 3Cscript%3E

我怎樣才能解決這個問題?

您需要進行三項更改:

  1. 使用^將匹配錨定到字符串的開頭。
  2. +匹配多個特殊字符。
  3. ""而不是" "替換匹配的子字符串:
    str = str.replaceAll("^[^a-zA-Z0-9\\s]+", "");  

你可能需要

str = str.replaceAll("(?m)^[^a-zA-Z0-9\\s]+", " ");   

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM