2016-10-20 6 views
-1

Javascriptで一致する文字列を見つけるために、正規表現を使用したいと思います。例えばJavascriptの正規表現で一致するルート

/bla/* should match /bla/something 
/bla/*/* should match /bla/something/someOhther 
/bla/*/*/blub should match /bla/something/someOhther/blub 

だから、実際には*はプレースホルダであり、何もすることができます。私は正規表現でこれを行う良い方法を見つけませんでしたが、私はかなり簡単な方法があると確信しています。あなたは助けてくれますか?

+0

を行うことによって、実際の正規表現にご入力の正規表現を変換しません。 '*'をネゲートされた文字クラス '[^ /] *'( '[^ \ /] *')のパターンに置き換えます。 –

+0

実際にはっきりしない...あなたは正確に何をしたいですか? 1つの正規表現すべて、1つの正規表現の場合ごとに? –

+0

ええ、私はそれを知っていますが、どういうわけか、それぞれの場合に動作する正規表現を得ることができませんでした: -/ – Christian

答えて

1

確保するために

.*\/*/を交換し、それを編集を

"/bla/something/someOhther".match(/\/bla\/.*\/.*/) 

のように一致して

"/bla/*/*".replace(/\*/g, ".*").replace(/\//g, "\\/"); 

を行うことによって、実際の正規表現にご入力の正規表現を変換する必要がありますその.は、[^/]

"/bla/something/someOhther".match(/^\/bla\/[^\/]*\/[^\/]*/$) ; //will match 

.を置き換える、文字列全体と一致していませんが、これは

"/bla/something/someOhther/hj".match(/^\/bla\/[^\/]*\/[^\/]*/$) ; //will not match due to extra /hj 

と一致して

"/bla/*/*".replace(/\*/g, "[^\/]*").replace(/\//g, "\\/"); 
+0

素晴らしいです。 1つの最後のビットが欠落しています。 now/bla/something /も一致しています。私は*に/と一致させたくありませんが、値がある場合のみです。インスタンス /BLA /ブラブため /一致していなければならない/ BLA/*/* – Christian

+0

は更新をしてみてください@Christian、これは同様にあなたのシナリオを処理する必要があります。 – gurvinder372

+0

ありがとう!魅力のように働く – Christian

関連する問題