匹配文件扩展名列表的正则表达式
Regular Expression to Match List of File Extensions
我想要一个正则表达式来匹配用管道 |
分隔的文件扩展名列表,例如 doc|xls|pdf
此列表也可以只是单个扩展名,例如pdf
或者它也可以是通配符 *
或 ?
我还想排除列表开头或结尾的 |
并且也不匹配\<>/:"
个字符。
我已经尝试了以下方法,但没有一个 *
通配符。
^([^|\<>\/:"]|[^\<>:"])[^\/\<>:"]*[^|\/\<>:"]$
我参加过其中一个在线测试,但似乎无法越过最后的障碍。如果有人能指出正确的方向,我将不胜感激。
您可以使用较小的积木构建它。单个扩展名(不包括您提到的字符)为:
[^\<>/:"]+
我们可能还应该排除 |
,因为那是我们的分隔符:
[^\<>/:"|]+
这也可以自动匹配通配符,因为它们没有被禁止。
从中构建 |
分隔列表很容易:
[^\<>/:"|]+
后跟任意数量的相同内容,前面有 |
:
[^\<>/:"|]+(\|[^\<>/:"|]+)*
如果您想要一个完整的字符串来匹配它,请添加 ^
和 $
锚点:
^[^\<>/:"|]+(\|[^\<>/:"|]+)*$
我想要一个正则表达式来匹配用管道 |
分隔的文件扩展名列表,例如 doc|xls|pdf
此列表也可以只是单个扩展名,例如pdf
或者它也可以是通配符 *
或 ?
我还想排除列表开头或结尾的 |
并且也不匹配\<>/:"
个字符。
我已经尝试了以下方法,但没有一个 *
通配符。
^([^|\<>\/:"]|[^\<>:"])[^\/\<>:"]*[^|\/\<>:"]$
我参加过其中一个在线测试,但似乎无法越过最后的障碍。如果有人能指出正确的方向,我将不胜感激。
您可以使用较小的积木构建它。单个扩展名(不包括您提到的字符)为:
[^\<>/:"]+
我们可能还应该排除 |
,因为那是我们的分隔符:
[^\<>/:"|]+
这也可以自动匹配通配符,因为它们没有被禁止。
从中构建 |
分隔列表很容易:
[^\<>/:"|]+
后跟任意数量的相同内容,前面有 |
:
[^\<>/:"|]+(\|[^\<>/:"|]+)*
如果您想要一个完整的字符串来匹配它,请添加 ^
和 $
锚点:
^[^\<>/:"|]+(\|[^\<>/:"|]+)*$