如何用java编写更复杂的regexp



id喜欢执行以下规则:

不以空格"开头,不超过一个".",不以"."开头不以".."结尾不?/\:;文件中。

public static void Invalid(String[] filename){  
for(String s: filename){     
    String u  = s;
    try {
        u = new String(s.getBytes(), "UTF-8");
        System.out.println(u);
    } catch (Exception e) {
        e.printStackTrace();
    } 
    u=u.replaceAll("[.$]", " ");//.{2,}\?
    u = u.replaceAll("\s+", "_");
    System.out.println(s + " = " + u);
}
}

基本上很简单:

  String[] name={"some?thing..txt."};
  Invalid(name);

输出:

 some?thing..txt.
 some?thing..txt. = some_thing_txt_

我该怎么做?

您可以使用此模式验证文件名:

^[^?/\\;: .][^?/\\;:.]*(?:\.[^?/\\;:.]+)?$

注意:如果要允许空字符串,请在末尾添加|^$

不确定您到底想如何处理无效的文件名。

最新更新