我想从网址中删除所有空值:
var s="value1=a&value2=&value3=b&value4=c&value5=";
s = s.replace(...???...);
alert(s);
预期产出:
value1=a&value3=b&value4=c
我只需要考虑URL的查询部分。
答案 0 :(得分:9)
这样的事情:
s = s.replace(/[^=&]+=(&|$)/g,"").replace(/&$/,"");
即,删除一个或多个非等号/非符号字符的组,后跟等号和符号或字符串结尾。然后删除任何剩余的尾随&符号。
答案 1 :(得分:0)
这应该可以解决问题:
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);
答案 2 :(得分:0)
我找不到任何使用Regex
表达式的解决方案。
但是你可以遍历你的字符串并构造一个新的结果字符串: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)
答案 3 :(得分:0)
s = s.replace(/[^?=&]+=(&|$)/g,"").replace(/&$/,"");
添加了“?”修正nnnnnn的答案以解决完整URL中第一个参数为空的问题。
答案 4 :(得分:-1)
你在哪里取得所有价值? 我建议使用数组:
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('&');
}