为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用正则表达式验证文件名?

如何使用正则表达式验证文件名?

精慕HU 2023-04-19 15:59:10
您好我正在编写一个用于文件名验证的正则表达式。结合来自不同论坛的点点滴滴,但没有正确的测试结果。下面是我想要实现的例子的格式格式:ABC<1|2>_DEF<6-7 位>_GHI<1|2|3>.xml 示例:ABC2_DEF1234567_GHI3.xml这是用 Java 定义的正则表达式。private static final String PATTERN = "ABC[1|2|3]+_DEF\\d[0-9]{6,7}+_GHI[1|2|3].xml$";
查看完整描述

2 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

我的猜测是您可能想要设计一个类似于以下的表达式:

^ABC[12]_DEF[0-9]{6,7}_GHI[1-3]\.xml$

测试

import java.util.regex.Matcher;

import java.util.regex.Pattern;


final String regex = "^ABC[12]_DEF[0-9]{6,7}_GHI[1-3]\\.xml$";

final String string = "ABC2_DEF1234567_GHI3.xml\n"

     + "ABC<1|2>_DEF<6-7digits>_GHI<1|2|3>.xml";


final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);

final Matcher matcher = pattern.matcher(string);


while (matcher.find()) {

    System.out.println("Full match: " + matcher.group(0));

    for (int i = 1; i <= matcher.groupCount(); i++) {

        System.out.println("Group " + i + ": " + matcher.group(i));

    }

}

正则表达式电路

jex.im可视化正则表达式:

//img2.sycdn.imooc.com/643f9f7c0001ea1a06530126.jpg

查看完整回答
反对 回复 2023-04-19
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

以下应该足够了:

"(?i)abc[12]_def\d{6,7}_ghi[123]\.xml

请注意使用?iflag 进行不区分大小写的匹配。您也可以使用Pattern.CASE_INSENSITIVE常量。

此正则表达式匹配abc后跟 a1或 a 2,然后是_def,然后是 6-7 位数字,然后是_ghi,然后是123,扩展名为.xml

查看完整回答
反对 回复 2023-04-19
  • 2 回答
  • 0 关注
  • 270 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信