下面的正则表达式的Javascript正则表达式匹配/解压文件扩展名
var patt1=/[0-9a-z]+$/i;
提取字符串,例如
filename-jpg
filename#gif
filename.png
如何修改这个正则表达式只返回一个扩展名,当串真正的文件扩展名是一个点作为分隔符的文件名? (显然文件名#GIF不是普通文件名)
UPDATE基于tvanofsson的评论我想澄清的是,当JS函数接收到字符串时,字符串将已经包含一个文件名,没有空格,没有点和其他特殊字符(它实际上将被处理为slug
)。问题不在于解析文件名,而在于错误地解析了slug - 当函数返回null
或者空字符串时,该函数返回了“jpg”的扩展名,当它被赋予“filename-jpg”时,这是需要的行为纠正。
是否正则表达式必须确定文件名是否是合法文件名?什么定义了合法的文件名?什么定义了合法的文件扩展名?例如,是'foo吧。zi_'合法的文件名? 'foo.bar.zi_'怎么样? – tvanfosson
典型的操作系统文件名..你的例子与它的空间不能发生在我们的系统和@stema提供的答案似乎与双扩展工作,所以这对我来说已经足够了。 – mare
这两个示例都是Unix和Windows中的合法文件名。你的问题可以通过详细说明你认为是合法的文件名来改进。它会做出答案,尤其是。接受的答案对未来可能寻求解决相同或类似问题的读者更有意义。 – tvanfosson