除了使用正则表达式之外,还有没有更好的方法可以从标准JavaScript中的URL字符串中的查询字符串中删除参数?
到目前为止,这是我想出的方法,似乎可以在我的测试中使用,但是我不希望重新发明querystring解析!
function RemoveParameterFromUrl( url, parameter ) {
if( typeof parameter == "undefined" || parameter == null || parameter == "" ) throw new Error( "parameter is required" );
url = url.replace( new RegExp( "\\b" + parameter + "=[^&;]+[&;]?", "gi" ), "" ); "$1" );
// remove any leftover crud
url = url.replace( /[&;]$/, "" );
return url;
}
"[&;]?" + parameter + "=[^&;]+"
似乎很危险,因为它的参数“ bar”会匹配:
?a=b&foobar=c
另外,如果parameter
包含RegExp中特殊的任何字符(例如“。”),它将失败。而且它不是全局正则表达式,因此只会删除该参数的一个实例。
我不会为此使用简单的RegExp,而是会解析其中的参数并丢失您不需要的参数。
function removeURLParameter(url, parameter) {
//prefer to use l.search if you have a location/link object
var urlparts = url.split('?');
if (urlparts.length >= 2) {
var prefix = encodeURIComponent(parameter) + '=';
var pars = urlparts[1].split(/[&;]/g);
//reverse iteration as may be destructive
for (var i = pars.length; i-- > 0;) {
//idiom for string.startsWith
if (pars[i].lastIndexOf(prefix, 0) !== -1) {
pars.splice(i, 1);
}
}
return urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : '');
}
return url;
}
我有一个查询字符串,可以是: 编辑:参数值的长度可以大于2 有人知道在String.ReplaceAll([regex],[replace])中使用什么好的regex表达式吗?
问题内容: 从Java脚本的路径中删除查询字符串的简单方法是什么?我已经看到了使用window.location.search的Jquery插件。我不能这样做:在我的情况下,URL是从AJAX设置的变量。 问题答案: 一个简单的方法是: 对于那些还希望 在不存在querystring的情况* 下 删除哈希 (不是原始问题的一部分)的人,需要做更多的工作: * 编辑 @caub(最初为@crl)建议
我有一个按钮,它正在执行“访问我的页面”并向查询字符串添加筛选器。我的代码将该过滤器应用于网格,但用户可以删除/编辑该过滤器。因为他们可以看到网格中应用了什么过滤器,所以我想在显示页面时从查询字符串中删除。 它可能会混淆,如果在页面上和URL说最初是正确的,但是用户删除了这个过滤器,并在上应用了一个新的过滤器,但是查询字符串仍然是.网格可以处理更改过滤器,而不需要后退。 我该怎么做?如果无法删除/
问题内容: 我有一个数据库名称字典。我从字典中取一个名字 可以说database_name的值为’foo’ 使用Psycopg2我正在执行一条语句: 我在foo处收到语法错误,因为它应该是“ INSERT INTO foo VALUES”而不是“ INSERT INTO’foo’VALUES” 有什么建议如何传递表名的字符串值并删除单引号?我应该在数据库字典值中放置一个转义符吗? 问题答案: 在尝
问题内容: 使用javascript,如何将查询字符串参数添加到url(如果不存在)或如果存在,则更新当前值?我正在使用jquery进行客户端开发。 问题答案: 我编写了以下函数来实现我想要实现的功能:
我正在使用Twitter API,我试图只获得一条tweet及其链接的第一条新闻。如果我,我将得到如下示例: 我只想获得的第一个字符串,同时删除中的链接。下面是我的其余代码: