2017-05-26 16 views
1

これはstackoverflowスニペットでは機能しませんでしたが、ローカルで試してみるとうまくいくはずです。スプリットからパス内の文字列を取得するには?

jsが

cdn=//cdn.files.com/web 

私にこの結果を与えるが、私は結果がこの

//cdn.files.com/web 
のようでなければならないわけ

cdn= 

JSがcdn=から後に私を与える必要があり、このラインにしたいいけません

私のすべてのjsはそうですので、それを行うには?

var scripts = document.getElementsByTagName('script'); 
 
var index = scripts.length - 1; 
 
var myScript = scripts[index]; 
 
// myScript now contains our script object 
 
var queryString = myScript.src.replace(/^[^\=]+\??/,''); 
 

 
alert(decodeURIComponent(queryString));
<script src="//domain.com/web/Assets/js/main.js?cdn=%2f%2fcdn.files.com%2fweb"></script> 
 

 
<p></p>

+0

後の文字列を与えるのだろうか?あなたの正規表現でcdn = '? 'var queryString = myScript.src.replace(/^.+?cdn = /、 '');'これは、 'cdn =' –

答えて

2

 var s = "cdn=//cdn.files.com/web"; 
 
     
 
     s2 = s.substring(s.indexOf("cdn=")+4,s.length); 
 
    
 
     alert(s2);

これは隣のインデックスから部分だろうあなたの文字列:)固定

の最後の文字を等しく、あなたがsplit使用することができます

+0

本当にありがとうございます –

+0

@ani_cssあなたは最良の答えとして答えを設定できますか?私はコミュニティに新しいです –

2

分割'?cdn='によって文字列とその(インデックス1の結果配列の2番目の要素)の後の部分を得ます。

var queryString = myScript.src.split('?cdn=')[1]; 

FYI その後、あなたは、単に分割のため=またはcdn=を使用することができる唯一のURLのparamがあった場合。

+0

の後に文字列を与えます。それはとてもうまく動作します。 this = 'split( '=')[1];' 'これはあまりにもうまくいっていますが、何か問題がありますか? –

+1

@ani_css:複数のURLパラメータがある場合、問題が発生する可能性があります。 –

1

をテストした:

yourvariable.split('='); 

GETにあなたの引数が何であれ、の奇数 paramは、あなたの望む結果を得るでしょう。

PS:srcで与えられたリンクに必要なパラメータで作業できるので、= charだけを使用してください。説明あなたが正規表現で^.+?cdn=を使用できない理由

1

ソリューション?

これは、あなたが^ `使用することはできません理由。+ cdn=

var myScript = '//domain.com/web/Assets/js/main.js?cdn=%2f%2fcdn.files.com%2fweb'; 
 
var queryString = myScript.replace(/^.+?cdn=/, ''); 
 
console.log(decodeURIComponent(queryString));

+0

助けがあれば教えてください – MaxZoom

1

と正規表現

var src = 'cdn=//cdn.files.com/web'; 
 
var url = src.replace(/^([^\=]+=)(.*)$/, '$2'); 
 
console.log(decodeURIComponent(url));

DEMO

関連する問題