使用regexp和javascript测试文件名

时间:2012-02-21 04:34:24

标签: javascript regex

我正在使用它:

   if (data.match(/([^\/\\]+ )\.(txt|doc)$/i) )
   return {filename: RegExp.$1, ext: RegExp.$2};

仅允许(当为真)文件.ext列出。其中,上面是txt和doc。这种方法很有效,直到它只是一个扩展名,例如.DS_store。例如,如果遇到.DS_store则停止测试。如何修改语句以优雅地拒绝仅包含ext的文件名,同时继续处理其他文件名?

由于

2 个答案:

答案 0 :(得分:1)

试试这个:(不匹配“.doc”,也不匹配“.doc”,但会解析:'myfile / Regular name.doc'):

data.match(/(?=([\s]*))\1([^\/\\]+)\.(txt|doc)$/i)

(你吞噬了前导空格,但由于名称中的空格有效,你的情况很复杂。但是由于你不能使用possessive quantifiers,你mimic this behavior看起来是正面的 - 提前零宽度断言,包括零,然后是对它的反向引用。)

答案 1 :(得分:0)

试试这个。如果我理解你的问题......

var m = data.split('.')[data.split('.').length-1];
return (m == "doc" || m == "txt") ? true : false;

Here是工作小提琴。