2012-02-21 108 views
1

檔案名稱,我使用這樣的:測試用正則表達式和javascript

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

,僅允許(在真)列出文件.EXT的。其中,對於以上是txt和doc。這很好,直到遇到一個只是擴展名的文件名,例如.DS_store。如果遇到例如.DS_store,它會停止測試。如何修改語句以優雅地拒絕只包含ext的文件名,同時繼續處理其他文件名?

感謝

+0

你是什麼意思,它停止測試?它不會匹配正則表達式,但是你想要什麼?請詳細解釋你想在這裏改變什麼http://jsfiddle.net/B46yq/ – Cheery 2012-02-21 04:51:35

+0

這是行動中的問題:http://jsfiddle.net/B46yq/17/ – cube 2012-02-21 15:07:00

回答

1

試試這個:(不會匹配名爲 「.doc」,也沒有名爲 「.doc」,但將解析: 'MYFILE /普通name.doc'):

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

(你吞噬前導空格,但由於名稱中的空格是有效的,因此您的情況很複雜,但由於您不能使用possessive quantifiers,所以您的mimic this behavior的積極前瞻性零寬度斷言包含零,然後對其進行反向引用。

+0

謝謝,很好!任何想看到/使用它的人:http://jsfiddle.net/B46yq/22/ – cube 2012-02-21 15:59:22

0

試試這個instead.If我理解正確你的問題......

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

Here是工作提琴。