针对指定文件名验证规则生成匹配的RegEx正则表达式
文件名验证正则解决方案
最终正则表达式
完全覆盖所有给出校验规则的正则如下:
^\d+(?:_\d+)*(?:_[A-Za-z]+)?$
如果允许下划线后的片段同时包含数字和字母(例如123_abc123也判定为有效),可以调整为:
^\d+(?:_[A-Za-z\d]+)*$
匹配校验核对
有效匹配场景
- 纯数字文件名:
1234567890→ 匹配通过 - 数字+下划线+字母文件名:
1234567890_Alphabet→ 匹配通过 - 多段数字+最终字母文件名:
11244422_134444_john→ 匹配通过 - 多段纯数字文件名:
12422344_12453222→ 匹配通过
无效匹配场景
- 含空格、横杠等非法符号:
1234567890 - Alphabet、1234322_1234431 john、1234222_134322-john→ 匹配失败 - 数字直接拼接字母无下划线分隔:
1234567890alphabet→ 匹配失败
正则逻辑说明
^:匹配字符串起始位置,确保没有前置非法字符\d+:匹配1个及以上数字,满足「首字符必须为数字」的要求(?:_\d+)*:非捕获组,匹配0次及多次「下划线+1个及以上数字」的组合,满足多段数字用下划线分隔的需求,同时保证下划线前一定是数字(?:_[A-Za-z]+)?:非捕获组,匹配0次或1次「下划线+1个及以上字母」的组合,支持末尾可选加字母后缀,同时保证分隔用的下划线前一定是数字$:匹配字符串结束位置,确保没有后缀多余字符
内容的提问来源于stack exchange,提问作者SudeepShakya
相关产品推荐
相关产品推荐

