如何从JavaScript中的文件名string中提取扩展名?

我将如何获得variables中的文件的文件扩展名? 就像如果我有一个文件为1.txt我需要它的TXT部分。

与以下所有input一起使用的变体:

  • "file.name.with.dots.txt"
  • "file.txt"
  • "file"
  • ""
  • null
  • undefined

将会:

 var re = /(?:\.([^.]+))?$/; var ext = re.exec("file.name.with.dots.txt")[1]; // "txt" var ext = re.exec("file.txt")[1]; // "txt" var ext = re.exec("file")[1]; // undefined var ext = re.exec("")[1]; // undefined var ext = re.exec(null)[1]; // undefined var ext = re.exec(undefined)[1]; // undefined 

说明

 (?:#开始非捕获组
   \。  #点
   (#开始捕获组(捕获实际的扩展)
     [^。] +#除点之外的任何东西,多次
   )#结束捕获组
 )?  #结束非捕获组,使其成为可选项
 $#锚到string的末尾

使用lastIndexOf方法查找string中的最后一个句点,然后获取string的一部分:

 var ext = fileName.substr(fileName.lastIndexOf('.') + 1); 

我个人更喜欢分割string. 并只返回最后一个数组元素:)

var fileExt = filename.split('.').pop();

如果没有.文件名中,你会得到整个string。

例子:

 'some_value' => 'some_value' '.htaccess' => 'htaccess' '..http://img.dovov.comsomething.cool.jpg' => 'jpg' 'http://www.w3schools.com/jsref/jsref_pop.asp' => 'asp' 'http://stackoverflow.com/questions/680929' => 'com/questions/680929' 

我会build议使用lastIndexOf()而不是indexOf()

 var myString = "this.is.my.file.txt" alert(myString.substring(myString.lastIndexOf(".")+1)) 

更好地使用以下; 始终工作!

 var ext = fileName.split('.').pop(); 

这将返回没有点前缀的扩展名。 你可以加 ”。” + ext来检查您希望支持的扩展名!

 var x = "1.txt"; alert (x.substring(x.indexOf(".")+1)); 

注意1:如果文件名的格式为file.example.txt,这将不起作用
注意2:如果文件名是表单文件,这将失败

这是如果您的文件有更多的解决scheme。 (点)的名字。

 <script type="text/javascript">var x = "file1.asdf.txt"; var y = x.split("."); alert(y[(y.length)-1]);</script> 

获取variables的值,然后像这样分开它的扩展。

 var find_file_ext=document.getElementById('filename').value; var file_ext=/[^.]+$/.exec(find_file_ext); 

这将帮助你。

我使用下面的代码:

 var fileSplit = filename.split('.'); var fileExt = ''; if (fileSplit.length > 1) { fileExt = fileSplit[fileSplit.length - 1]; } return fileExt; 

尝试这个。 可以解决你的问题。

 var file_name_string = "file.name.string.png" var file_name_array = file_name_string.split("."); var file_extension = file_name_array[file_name_array.length - 1]; 

问候