我有一个脚本,它从表单上的文件输入中获取文件名,并在删除一些不需要的细节后将其放入文本字段。
我上传的所有文件都会标有关键字
请注意,这是针对Chrome扩展程序的,因此不需要X浏览器支持。
var filename = $("uploaded_data").val().toLowerCase();
filename = filename.replace(/_/g, " ").replace(/-/g, " ").replace("c:\\fakepath\\", "");
type_index[1] = filename.indexOf("red");
type_index[2] = filename.indexOf("blue");
type_index[3] = filename.indexOf("green");
type_index[4] = filename.indexOf("purple");
type_index[5] = filename.indexOf("magenta");
for (i=0 ; i > -1 ; i++ ) {
if (type_index[i] > -1)
{
filename_final = filename.substring(type_index[i]);
break;
}
}
$("#material_title").val(filename_final);
现在这段代码工作正常,但是,我不希望颜色成为文件名的一部分。 例如,如果输入文件名为“test_red_name_low.jpg”,则文本字段应为“name low.jpg”。目前,上面的代码输出'red name low.jpg'。其他时候,文件名可能是'this_is_a_test-blue_happy.jpg',应输出'happy.jpg'。
type_index数组最终将包含大量值,因此替换将是一种非常漫长的方式。
有关此方法的任何建议吗?
答案 0 :(得分:1)
这个正则表达式会做到这一点。
// add as many colors you like here.
var colors = ['red','green', 'blue', 'magenta', 'purple'];
filename = filename.replace(/-|_|c:\\fakepath\\/g,' ')
.replace(new RegExp("("+colors.join("|")+")", "g"), " ")
.replace(/.* /,'').trim()