测试字符串数组的内容是否在String中

时间:2015-03-12 19:36:56

标签: javascript

我目前正在硬编码测试文件扩展名是否在字符串中。

我的硬编码方式有一个扩展名

var extension = /(\.txt)$/i;

var testFile = "myTest.txt";

alert(extension.test(testFile)); 

我计划驱动这个数据库,并以逗号分隔的列表发送文件扩展名。

如何解析逗号分隔列表并测试我的String扩展名是否在该列表中?

var testFile = "mytest.txt"
var validExtensions = "xlsx,txt,csv";

3 个答案:

答案 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);
});