2016-09-23 6 views
-5

私のURLに文字列の後にJS正規表現を使用してすべてを削除しようとしています。たとえば、www.myurl/one/two/three/?a=b&c=d "three /"という文字列の後にすべてをドロップします。これにマッチする正規表現をどのように書くのでしょうか?Javascript Regex - 文字列の後ろにすべて一致する

+0

あなたは正規表現を使用しTO_ _haveますか?文字列内のその単語の位置を見つけてそこで切り詰めるのは簡単な仕事です。 – vlaz

+0

str.split( 'three /')[0] + 'three /'; –

+0

"three"の後のすべてを削除するか、クエリパラメータを削除しますか? –

答えて

0

これは簡単な方法です。

var str = 'www.myurl/one/two/three/?a=b&c=d' 
 

 
var newStr = str.replace(/(.*\/three\/).*/, '$1') 
 

 
alert(newStr)

2

、このいずれかを試してみてください:

文字列と配列の方法に

function getPathFromUrl(url) { 
 
    return url.split("?")[0]; 
 
} 
 

 
var url = 'www.myurl/one/two/three/?a=b&c=d'; 
 
var result = getPathFromUrl(url); 
 
alert(result);

+0

彼は3つ後にすべてを落としたいと言った。このようにしても、彼は結果を得ることができます。 –

+0

3つ後、パラメータ値が返される関数に渡すことができるパラメータがあれば、それを返します。 –

+0

ありがとうございます。私はもう一度編集しました。私は彼が3つ後にクエリ文字列を望むと思った。再び私は彼の質問を読んだ後、編集された答えを読んだ。 –

0

またはbasicaly:

var string = "www.myurl/one/two/three/?a=b&c=d"; 
var array = string.split('/'); 
array.pop(); 
var result = array.join("/"); 
console.log(result); //www.myurl/one/two/three 
+1

'three'の後にスラッシュがない場合、これは失敗します。これは完全に有効なURL形式です。 –

+0

だから、あなたは '[?\ /]'で分割したいかもしれません。 –

+0

@torazaburoであり、URLにクエリ文字列_and_がない場合は失敗します。 – vlaz

1

組み込みのURL操作機能を使用します。

var a = document.createElement('a'); 
 
a.href = "http://www.myurl/one/two/three/?a=b&c=d"; 
 
a.search = ''; 
 
console.log(a.href);

  1. a要素のsearchプロパティが疑問符で始まる部分を指します。

  2. http://が必要です。それ以外の場合、URLは現在のURLとの相対的なものとして解釈されます。あなたは正規表現を使用することを好む場合、あなたはすべて疑問符で始まる消すことができ

"www.myurl/one/two/three/?a=b&c=d".replace(/\?.*/, '') 

それとも、あなたは、このようなすべてのものとして、維持したい何一致する可能性をまで疑問符、使用して:

"www.myurl/one/two/three/?a=b&c=d".match(/.*(?=\?)/)[0] 

をあなたはそのもみ[0]match以来の戻り配列を、必要としますt要素は完全一致です。ここで?=ルックアヘッドです。あなたは、具体的three/まで一致させたい場合は実際には、

"www.myurl/one/two/three/?a=b&c=d".match(/[^?]+/)[0] 

と同じかです:

"www.myurl/one/two/three/?a=b&c=d".match(/.*three\//)[0] 
関連する問題