JavaScript正则表达式提取.x-m4a文件扩展名问题求助
解决.x-m4a扩展名提取的正则匹配问题
问题原因
你当前使用的正则表达式/\.[0-9a-z]+$/i仅匹配包含数字、小写字母的扩展名,但.x-m4a里包含减号-,不在正则的匹配范围内,导致match()方法返回null。此时直接访问[0]就会触发TypeError: cannot read properties of null (reading '0')。
解决方案
修改正则表达式,将减号-加入匹配字符集,同时保留大小写不敏感的规则:
var regex = /\.[0-9a-z-]+$/i; var matchResult = 'audio.x-m4a'.match(regex); // 先判断匹配结果是否存在,避免报错 var ext = matchResult ? matchResult[0] : ''; console.log(ext); // 输出:.x-m4a
额外说明
- 正则里的
-需要放在字符集的末尾(或开头),避免被解析为范围符号(比如a-z是范围,-z就只是字符)。 - 增加空值判断可以让代码更健壮,即使遇到无扩展名的文件名也不会报错。
内容的提问来源于stack exchange,提问作者Vakindu
相关产品推荐
相关产品推荐

