URLからすべての空の値を削除したい:
var s="value1=a&value2=&value3=b&value4=c&value5=";
s = s.replace(...???...);
alert(s);
期待される出力:
value1=a&value3=b&value4=c
URLのクエリ部分のみを考慮する必要があります。
URLからすべての空の値を削除したい:
var s="value1=a&value2=&value3=b&value4=c&value5=";
s = s.replace(...???...);
alert(s);
期待される出力:
value1=a&value3=b&value4=c
URLのクエリ部分のみを考慮する必要があります。
このようなもの:
s = s.replace(/[^=&]+=(&|$)/g,"").replace(/&$/,"");
つまり、等号とアンパサンドまたは文字列の終わりが後に続く1つ以上の非等号/非アンパサンド文字のグループを削除します。次に、残っている末尾のアンパサンドをすべて削除します。
デモ: http: //jsfiddle.net/pKHzr/
s = s.replace(/[^?=&]+=(&|$)/g,"").replace(/&$/,"");
'?'を追加しました nnnnnnの回答に、完全なURLの最初のパラメーターが空である問題を修正します。
Regex
1つの式でそれを行うための解決策は見つかりません。
ただし、文字列をループして新しい結果文字列を作成することはできます:http: //jsfiddle.net/UQTY2/3/
var s="value1=a&value2=&value3=b&value4=c&value5=";
var tmpArray = s.split('&');
var final = '';
for(var i=0 ; i<tmpArray.length ; i++)
if(tmpArray[i].split('=')[1] != '')
final += tmpArray[i] + '&';
final = final.substr(0,final.length-1)
alert(final)
これでうまくいくはずです:
var s="value1=a&value2=&value3=b&value4=c&value5=";
var tmp = s.split('&')
var newS = '';
for(var i in a) {
var t = a[i];
if(t[t.length - 1] !== '=') {
newS += t + '&';
}
}
if(newS[newS.length - 1] === '&') {
newS = newS.substr(0, newS.length - 1);
}
console.log(newS);
すべての値をどこで取得しますか?配列を使用することをお勧めします:
function getValues(str){
var values = [];
var s = str.split('&');
for(var val in s){//source is a
var split = val.split('=');
if(split [1] != '' && split [1] != null){
values.push(val);
}
}
return values.join('&');
}