Regex-获取不带哈希的查询字符串
Regex - Get query string without hash
需要能够传入URL,正则表达式应该能够仅提取查询字符串。不过,关键部分是省略了hashbang和后面的任何东西。
到目前为止,这就是我所拥有的,它忽略了散列,但之后仍然会得到文本。它仍然获得第一个?
之前的所有内容。
/([^&=#]+)=?([^&#]*)/g
注意:我知道window.location.search
,但我需要能够传入任何URL字符串。
您无法使用regex:
var url='http://www.somewhere.com/#something?other&moreStuff';
var index=url.indexOf('#');
var whatIwant = url.substring(index+1);
或者从您的正则表达式:
([^#]+)=?([^&#]*)
如果您想从字符串中提取URL的部分,RegExp是错误的作业工具。有太多奇怪的情况,浏览器有一些简单的内置解析URI的方法:
function parseUri(uri) {
var a = document.createElement('a');
a.href = uri;
return {
protocol: a.protocol,
host: a.host,
hostname: a.hostname,
port: a.port,
pathname: a.pathname,
search: a.search,
hash: a.hash
};
}
当遇到以下URI时,此代码不会中断:
'http://www.foo.com???#?foo=bar&fizz=buzz#'
并且可以用于您的案例作为:
parseUri('http://www.foo.com???#?foo=bar&fizz=buzz#').search; // '???'
要获得查询字符串,这一个就足够了。
'?.*
如果你想更具体一点,你可以试试这个:
'?(([a-zA-Z]+(=[a-zA-Z])?)&?)+
第一个字符标记查询字符串的开始(?),后面是成对的key=value接受没有值定义的keys(=[a-zA-Z])?负责使其可选)。它可能会有所改进,但它是更复杂事情的起点。另外,请注意,我只假设由小写字母和大写字母组成的值。你也可以在上面加数字。
相关文章:
- 如何有效地将游戏数据存储在URL查询字符串中
- 从查询字符串参数推断出正确的数据类型
- AngularJS:获取链接中没有哈希的查询字符串值
- AngularJS,如何更改查询字符串
- 如何将activeadmin查询字符串传递给batch_action
- 如何从查询字符串中的输入字段发回文本
- Django在使用AJAX时没有接收到新的查询字符串
- 使用查询字符串方法清除浏览器缓存
- 用于刷新的Javascript更改查询字符串
- 我想将查询字符串变量添加到JSON名称/值对中
- 将查询字符串值从页面传递 asp.net 到 iframe
- jqueryajax生成查询字符串,如果未定义则不通过
- 如何将查询字符串传递到HTML框架
- AngularJs将查询字符串发布到c#控制器
- Jquery - 从查询字符串中获取“#”值之后,而不是在“?”符号值之后获取
- 在 JavaScript 中将查询字符串传递给 Web 服务 (ASP.NET)
- 在查询字符串中查找 where 子句
- POST encodeURI查询字符串内部服务器错误 500
- JavaScript:从具有使用 # 符号的路由的 URL 获取查询字符串
- 更改链接 URL 中的路径名,同时保持查询字符串不变