匹配文件扩展名列表的正则表达式

时间:2021-01-06 12:43:44

标签: regex match

我想要一个正则表达式来匹配以管道 | 分隔的文件扩展名列表,例如 doc|xls|pdf 此列表也可以只是单个扩展名,例如 {{ 1}} 或者它也可以是通配符 pdf* 我还想排除列表开头或结尾的 ? 并且也不匹配 {{ 1}} 个字符。

我尝试了以下方法,但它没有考虑单个 | 通配符。

\<>/:"

我参加过其中一位在线测试员,但似乎无法克服最后的障碍。如果有人能指出我正确的方向,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以从较小的构建块构建它。单个扩展名,不包括您提到的字符,将是:

[^\\<>/:"]+

我们可能还应该排除 |,因为它是我们的分隔符:

[^\\<>/:"|]+

这也可以自动匹配通配符,因为它们没有被禁止。

从这些中构造|分隔的列表很容易:

[^\\<>/:"|]+

后跟任意数量的相同事物,前面带有 |

[^\\<>/:"|]+(\|[^\\<>/:"|]+)*

如果您想要一个完整的字符串来匹配它,请添加 ^$ 锚点:

^[^\\<>/:"|]+(\|[^\\<>/:"|]+)*$