我目前正在硬编码测试文件扩展名是否在字符串中。
我的硬编码方式有一个扩展名
var extension = /(\.txt)$/i;
var testFile = "myTest.txt";
alert(extension.test(testFile));
我计划驱动这个数据库,并以逗号分隔的列表发送文件扩展名。
如何解析逗号分隔列表并测试我的String扩展名是否在该列表中?
var testFile = "mytest.txt"
var validExtensions = "xlsx,txt,csv";
答案 0 :(得分:3)
你应该使用OR运算符管道。
var extension = /(\.txt|\.xls|\.csv)$/i;
使用输入字符串:
var extensionsString = 'csv|txt|xlsx';
var pattern = new RegExp('(\.)(' + extensionsString + ')$', 'ig');
console.log('somepath/somefile.txt'.match(pattern));
答案 1 :(得分:1)
您不需要正则表达式来断言字符串末尾的匹配位置。
相反,您可以使用ECMAScript6 String.prototype.endsWith
,它可以是polyfilled。
validExtensions.split(',').some(ext => testFile.endsWith('.' + ext));
答案 2 :(得分:0)
拆分数组并使用正则表达式中的每个项目:
validExtensions.split(',').some(function(ext) {
return new RegExp('(\.' + ext + ')$').test(fileName);
});