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

Regular Expression to Match List of File Extensions

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

我已经尝试了以下方法,但没有一个 * 通配符。

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

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

您可以使用较小的积木构建它。单个扩展名(不包括您提到的字符)为:

[^\<>/:"]+

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

[^\<>/:"|]+

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

从中构建 | 分隔列表很容易:

[^\<>/:"|]+

后跟任意数量的相同内容,前面有 |

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

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

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