使用 JS 獲取副檔名

小珥_Boy發表於2019-03-06

給你一個檔名,你能獲得它的副檔名嗎?這裡面主要考察的是對正規表示式的熟悉程度。

我們先對檔名做個分析,副檔名是在檔名的最後,且以 . 開頭。

如此副檔名便有了兩個特點,針對第一個特點,我們用 $ 元字元限定副檔名在整個檔名的最後;

對於第二個特點,以 \. 表示副檔名的開頭,而用 [^\.]+ 匹配副檔名的名字部分。其中因為 . 是元字元,故予以轉義;^ 元字元放置於 . 字元之前表示匹配除 . 字元以外的任意字元。

綜上最後的匹配正則為 /\.[^\.]+$/,程式碼在下面給出:

function getFileExtendingName (filename) {
  // 副檔名匹配正則
  var reg = /\.[^\.]+$/;
  var matches = reg.exec(filename);
  if (matches) {
    return matches[0];
  }
  return '';
}

// 示例
var fName = 'dog.jpg';
console.log(getFileExtendingName(fName));   // ".jpg"
複製程式碼

需指出一點,正規表示式的 exec() 方法本質上與字串的 match() 方法相同,故上面呼叫 exec() 方法一行可換成:

var matches = filename.match(reg);
複製程式碼

相關文章