給你一個(gè)文件名,你能獲得它的擴(kuò)展名嗎?這里面主要考察的是對(duì)正則表達(dá)式的熟悉程度。
我們先對(duì)文件名做個(gè)分析,擴(kuò)展名是在文件名的最后,且以 . 開頭。
如此擴(kuò)展名便有了兩個(gè)特點(diǎn),針對(duì)第一個(gè)特點(diǎn),我們用 $ 元字符限定擴(kuò)展名在整個(gè)文件名的最后;
對(duì)于第二個(gè)特點(diǎn),以 \. 表示擴(kuò)展名的開頭,而用 [^\.]+ 匹配擴(kuò)展名的名字部分。其中因?yàn)?. 是元字符,故予以轉(zhuǎn)義;^ 元字符放置于 . 字符之前表示匹配除 . 字符以外的任意字符。
綜上最后的匹配正則為 /\.[^\.]+$/,代碼在下面給出:
function getFileExtendingName (filename) {
// 文件擴(kuò)展名匹配正則
var reg = /\.[^\.]+$/;
var matches = reg.exec(filename);
if (matches) {
return matches[0];
}
return '';
}
// 示例
var fName = 'dog.jpg';
console.log(getFileExtendingName(fName)); // ".jpg"
需指出一點(diǎn),正則表達(dá)式的 exec() 方法本質(zhì)上與字符串的 match() 方法相同,故上面調(diào)用 exec() 方法一行可換成:
var matches = filename.match(reg);