2016-04-01 6 views
0

ファイル名を取得して文字列を返そうとしています。regexを使って新しいファイル名を返す

はオンにしてみてください。

プレート-71-冬 - 鷹 - final.jpg

へ:プレートも大文字であるかもしれない

冬の鷹最終

。あなた

var newString = theString.replace(/^[Pp]late-\d+-(.*)\.jpg$/, '$1') 
         .replace(/-/g, ' '); 

注意してください:ここで私はこれまで、より良い方法を提供していません残念ながら

var theRegEx = new RegExp('[Plate|plate]-\d+-(.*).jpg'); 
var theString = "plate-71-winter-hawk-final.jpg" 

var newString = theString.replace(theRegEx, theString); 

newString; 
+0

最終

冬の鷹をあなたがこれを行うには正規表現が必要なのはなぜ?サブストリングと置換の組み合わせを使用すると、この記事を書いたよりもはるかに迅速に行うことができます。 –

+0

ああ、私は知らなかった。思考正規表現は最も簡単な方法でしょうか? – lukasz

+0

正規表現は単純な文字列操作よりもはるかに複雑です。特に、このタイプの操作を扱う場合は特にそうです。あなたはここでその複雑さを必要としません。 –

答えて

2

「ルール#1」を動作するようには思えない持っているものですbackslahesを逃れるために、オブジェクト構文で文字列を使用します。文字クラスは、文字の組だけで、あなたがサブストリングと特殊な正規表現を入れて、それを使用することができないことを

var theRegEx = new RegExp('^[Pp]late-\\d+-(.*)\\.jpg$'); 

注意を文字はその中の意味を失う。スクリプト次

var theRegEx = new RegExp(/^[Pp]late-\d+-(.*)\.jpg$/); 
+0

を使用する代わりに** _Lookこれは 'winter-hawk-final'を返します。 ' - 'は削除してはいけませんか? –

+0

はい、スペースで置き換える必要があります。 –

+0

ええ.replace(/ -/g、 '');彼の例では、これを修正するようだ。これは、うまくいった! – lukasz

0

試してみてください。[Plate|plate]は、あなたが(文字列なし)あまりにもこのようにそれを書くことができ[Pplate|]

よりも同じことです。それは、それが標準パターンを次のように文字列の長さに依存していないのです。

var data = "plate-71-winter-hawk-final.jpg"; 
var rx = /(?:plate\-\d+\-)(.*)(?=\.)/i; 

var match = rx.exec(data); 
if(match != null){ 
    data = match[1]; 
    data = data.replace(/\-/g, ' '); 
} 

console.log(data); 

それを印刷します:

関連する問題