首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Regex验证文件名?

如何使用Regex验证文件名?
EN

Stack Overflow用户
提问于 2019-07-25 05:02:41
回答 2查看 287关注 0票数 1

嗨,我正在为文件名验证编写一个正则表达式。组合来自不同论坛的部分,但没有正确的测试结果。下面是我想要实现的示例格式

格式:ABC<1区2>_DEF<6-7位数>_GHI<1区2区3>..xml示例: ABC2_DEF1234567_GHI3.xml

这里是用Java定义的正则表达式。

代码语言:javascript
复制
private static final String PATTERN = "ABC[1|2|3]+_DEF\\d[0-9]{6,7}+_GHI[1|2|3].xml$";
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-25 05:06:37

以下几点应该足够:

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

注意使用?i标志来匹配大小写。您还可以使用Pattern.CASE_INSENSITIVE常量。

这个正则表达式与abc匹配,后面是12,后面是_def,后面是6-7位数,后面是_ghi,后面是123,扩展名为.xml

演示

票数 1
EN

Stack Overflow用户

发布于 2019-07-25 05:10:00

我的猜测是,您可能希望设计一个类似于:

代码语言:javascript
复制
^ABC[12]_DEF[0-9]{6,7}_GHI[1-3]\.xml$

该表达式将在regex101.com的右上面板上解释,如果您希望探索/简化/修改它,那么在此链接中,您可以观察它如何与某些示例输入相匹配(如果您愿意)。

测试

代码语言:javascript
复制
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));
    }
}

RegEx电路

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57194640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档