我已按照这篇伟大帖子的回答:How can I get query string values in JavaScript?
但是,我遇到的问题是,在某些情况下,我的查询字符串值可能包含特殊字符,例如* + - / etc,例如:
?userid=de+8d49b7*8a85a3/222343
上述功能不适合这些。如何获取查询字符串值并包含特殊字符?我试过了:
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
var prodId = encodeURIComponent(getParameterByName('prodId'));
解决方案也必须在IE8 +中工作。
答案 0 :(得分:0)
这应该可以解决问题:
function getParameterByName(name,ovr) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(ovr || location.search);
return results === null ? "" : decodeURIComponent(results[1]);
}
var prodId = getParameterByName('prodId','?prodId=de+8d49b7*8a85a3/222343&userId=23243*--++/231');
console.log('Url: ?prodId=?prodId=de+8d49b7*8a85a3/222343&userId=23243*--++/231\nprodId: ' + prodId);
只需从返回的语句中删除此.replace(/\+/g, " ")
,这样您就可以使用+字符代替""(空格)。
重要的是要注意,这会对您获得的值产生歧义,因为网址不能包含空格,因此当您对网址进行编码时,它将包含+字符而不是空格。如果您愿意使用此方法,则必须确保您检索的所有值都没有空格。
答案 1 :(得分:0)
使用以下代码删除查询字符串中的特殊字符。
var value="testdkldskdskkd@#$$%^dsjse"
var cleanString = value.replace(/[/^]/g, "");
console.log(cleanString)