2016-07-12 21 views
-3
var s = '/home/src/_layouts/default.pug';// I wanna '_layouts/default' 
var regex = /(src\/.*)/; 
var m = s.match(regex); 
var t = m[0].match(/([^(src\/)].*)(?=\..*$)/)[0]; 
console.log(t);// outputs "_layouts/default" 

私はそれがより効率的に動作しますが、誰も私を助けることができますか?ありがとう。正規表現の一致文字列をフィルタリングするより効率的な方法はありますか?

+0

希望する動作を詳細に説明する必要があります。 –

答えて

1

正規表現は/src\/([^.]*)\..+/です。

これはsrcと一致し、ドットの前のすべてをキャプチャします。 [^.]はネゲートされた文字クラス(「これらの文字以外のすべてにマッチする」)です。つまり、ファイル名だけを取得し、拡張子は取得しません。

0

この正規表現についてはどう:

src\/(.*)\.\w+ 

がRegex101上でそれを試してみてください。https://regex101.com/r/bW2qS6/1

あなたのJSコードは次のようになります。あなたは後にしている

var s = '/home/src/_layouts/default.pug'; 
var t = s.match(/src\/(.*)\.\w+/)[1]; 
console.log(t); 
関連する問題