RegEx:从URL提取GET变量
RegEx: Extract GET variable from URL
RegExp大师们,听从我的召唤!
这可能是超级简单,但我把自己画在一个精神角落。
取一个常规的URL,在?
之后分割,它给出了一个字符串,如variable=val&interesting=something¬interesting=somethingelse
,我想提取interesting
的值。
我感兴趣的变量的名称可以是另一个变量的子字符串。所以匹配应该是
- 字符串开头或"&"字符
- 后面跟着"interesting="
- 后面跟着我要捕获的字符串
- 后接另一个"&"或字符串结束
我尝试了一些类似于['^&]interesting=(.*)[&$]
但我什么也没得到……
这将在每个get请求的Firefox插件中运行,这意味着jQuery不可用,如果可能的话,我希望避免编写函数所引起的额外字符串操作。
对我来说,这感觉就像一个通用的"用regex提取字符串的一部分",但也许我错了(regex显然不是我的强项)
简单解决方案
var arr = "variable=val&interesting=something¬interesting=somethingelse".split("&");
for(i in arr) {
var splits = arr[i].split("=");
if(splits[0]=="interesting") alert(splits[1]);
}
也是单行匹配
"variable=val&interesting=something¬interesting=somethingelse".match(/(?:[&]|^)interesting=((?:[^&]|$)+)/)[1]
function getValue(query)
{
var obj=location.search.slice(1),
array=obj.split('&'),
len=array.length;
for(var k=0;k<len;k++)
{
var elm=array[k].split('=');
if(elm[0]==query)return elm[1];
}
}
此函数直接提取查询URL,如果存在则返回相应的值。
//usage
var get=getValue('interesting');
console.log(get);//something
如果您正在使用Firefox的Add-on SDK,您可以使用url模块:
https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/url.html这比使用regex要好得多。
相关文章:
- 如何使Jquery编码的动态下拉菜单与PHP GET变量协调工作
- 如何使用jQueryPOST将get变量从JavaScript传递到PHP-Mysql
- 检查是否已设置GET变量
- 如何获取get变量's值
- 如何在 jQuery 中获取具有特定父类的所有元素的内容,并将它们传递给 GET 变量
- 获取重复Get变量的查询字符串值
- 我们可以在javascript url中传递GET变量吗
- 使用javascript设置GET变量
- Javascript等同于PHP的GET变量
- jquery 从 javascript 文件中获取 GET 变量
- 使用 get 变量缓存静态 HTML 页面
- 在表单提交中添加额外的 GET 变量
- 在表单提交后将 get 变量附加到 url,而无需新的隐藏输入
- Javascript 删除所有具有历史推送状态的 get 变量
- 通过jQuery更改表单上的操作后,GET变量将消失
- 使用jQuery/Javascript访问GET变量
- 如何在jquery中从ajax响应中检索GET变量
- 将输入字符串转换为GET变量
- 将GET变量挂接到加载的JavaScript事件中
- 将GET变量从URL传递到.js,并从.js传递到.php