我如何在变量中获得文件的File扩展名?就像我有一个文件1.txt我需要它的txt部分.
适用于以下所有输入的变体:
"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
说明
(?: # begin non-capturing group \. # a dot ( # begin capturing group (captures the actual extension) [^.]+ # anything except a dot, multiple times ) # end capturing group )? # end non-capturing group, make it optional $ # anchor to the end of the string
使用该lastIndexOf
方法查找字符串中的最后一个句点,然后获取字符串的一部分:
var ext = fileName.substr(fileName.lastIndexOf('.') + 1);
我个人更喜欢拆分字符串.
,只返回最后一个数组元素:)
var fileExt = filename.split('.').pop();
如果文件名中没有.
,则返回整个字符串.
例子:
'some_value' => 'some_value' '.htaccess' => 'htaccess' '../images/something.cool.jpg' => 'jpg' 'http://www.w3schools.com/jsref/jsref_pop.asp' => 'asp' 'http://stackoverflow.com/questions/680929' => 'com/questions/680929'
我建议使用lastIndexOf()而不是indexOf()
var myString = "this.is.my.file.txt" alert(myString.substring(myString.lastIndexOf(".")+1))
最好使用以下内容; 一直工作!
var ext = fileName.split('.').pop();
这将返回没有点前缀的扩展名.你可以加 "." + ext来检查您希望支持的扩展名!