2012-02-21 16 views
1

を含むファイル名:テストは、私はこれを使用していた正規表現とJavaScript

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

のみに記載されています(trueの場合)、ファイル.EXT年代を可能にします。これは上記のtxtとdocです。これは、ファイル名が.DS_storeのような拡張子になるまでうまくいきます。例えば.DS_storeに遭遇した場合、それはテストを停止する。他のファイル名を処理し続けながら、extだけで構成されるファイル名を正常に拒否するには、どのようにステートメントを修正できますか?

おかげ

+0

「テストを中止する」とはどういう意味ですか?それは正規表現と一致しませんが、何をしたいですか?あなたがここで何を変更したいのかを詳細に説明してください。http://jsfiddle.net/B46yq/ – Cheery

+0

ここに現実問題があります:http://jsfiddle.net/B46yq/17/ – cube

答えて

1

はこれを試してみてください( ".DOC" と一致し、また ".DOC" が、解析しますしません。 'myfileは/正規名.doc'):

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

(あなたが先頭のスペースを飲み込んで、あなたの状況は、名前に空白が含まれているという事実によって複雑になりますが、possessive quantifiersを使用することはできませんので、0を含む正の先読みゼロ幅アサーションを持つmimic this behaviorのアサーションを返し、その逆参照を行います。

+0

ありがとう、素晴らしい作品!見たい/見たい人:http://jsfiddle.net/B46yq/22/ – cube

0

は私が正しくあなたの質問を理解し、このinstead.Ifを試してみてください...

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

Hereは、作業フィドルです。

関連する問題