如何编写正则表达式匹配斜杠分隔的指定单词任意组合
正则表达式解决方案:匹配指定文件扩展名的单个或斜杠分隔组合
需求回顾
需要匹配以下两种合法格式:
- 单个合法扩展名:
pdf、csv、xlsx - 多个合法扩展名通过斜杠
/分隔的任意组合(顺序不限)
最终正则表达式
^(pdf|csv|xlsx)(\/(pdf|csv|xlsx))*$
正则结构解析
^:锚定字符串起始位置,避免匹配包含合法片段的非法字符串(比如testpdf)(pdf|csv|xlsx):匹配第一个合法的扩展名(\/(pdf|csv|xlsx))*:匹配0次或多次「斜杠+合法扩展名」的组合,*确保单个扩展名的场景也能匹配$:锚定字符串结束位置,避免匹配末尾带多余字符的非法字符串(比如pdf/)
测试用例验证
合法匹配项
pdfcsvxlsxpdf/csvcsv/xlsxpdf/csv/xlsxxlsx/pdf
非法匹配项
testdocpdf/doccsv/testpdf//csv(存在连续斜杠)pdf/(末尾带斜杠)pdfcsv(无分隔符的拼接)
扩展说明
如果需要支持大小写不敏感匹配(如PDF、Csv),可添加对应语言的不敏感标志:
- JavaScript:
/^(pdf|csv|xlsx)(\/(pdf|csv|xlsx))*$/i - Python:
re.compile(r'^(pdf|csv|xlsx)(\/(pdf|csv|xlsx))*$', re.IGNORECASE)
内容的提问来源于stack exchange,提问作者catch32
相关产品推荐
相关产品推荐

