以下正则表达式
var patt1=/[0-9a-z]+$/i;
提取字符串的文件扩展名,例如
filename-jpg
filename#gif
filename.png
如何修改此正则表达式以仅在字符串确实是一个以一个点作为分隔符的文件名时返回扩展名? (显然 filename#gif 不是常规文件名)
更新基于 tvanofsson 的评论,我想澄清一下,当 JS 函数接收到字符串时,该字符串将已经包含一个没有空格、没有点和其他特殊字符的文件名(实际上将被处理为 slug
) .问题不在于解析文件名,而在于错误地解析 slugs - 当函数被赋予“filename-jpg”时,函数返回了“jpg”的扩展名,而实际上它应该返回 null
或空字符串,它是这种行为需要纠正。
原文由 mare 发布,翻译遵循 CC BY-SA 4.0 许可协议
只需将
.
添加到正则表达式因为点是正则表达式中的特殊字符,所以您需要将其转义以按字面意思匹配它:
\.
。您的模式现在将匹配任何以点结尾且后跟
[0-9a-z]
中的至少一个字符的字符串。例子:
如果您还想将扩展名限制为一定数量的字符,那么您需要替换
+
点后至少允许 1 个字符,最多 5 个字符。