我有一个像这样的字符串
?i_am=busy&need=fun&s=
busy
和fun
部分可以更改为带破折号的字符串。我想将这两个提取到变量中以与jquery一起使用。我需要的是一个可以提取它们的正则表达式,但我的正则表达式知识充其量是有限的。
感谢任何帮助。
答案 0 :(得分:1)
这会将您的网址参数转换为对象:
<script type="text/javascript">
var sourceString = "?i_am=busy&need=fun&s=";
sourceString = sourceString.replace(/^\?/, ""); // remove the ?
var keyvals = sourceString.split("&");
var vars = {};
var i, keyval;
for (i=0; i<keyvals.length; i++) {
keyval = keyvals[i].split("=");
vars[keyval[0]] = keyval[1];
}
</script>
答案 1 :(得分:0)
尝试以下...你会得到两个命名的匹配。如果您的工具有\ w问题,您可以尝试[A-Za-z0-9_]而不是[\ w] 在Notepad ++中,您将引用匹配,如下所示:x-token = \ 1,y-token = \ 2 其他工具可能允许使用如下名称:x-token = $ {x},y-token = $ {y}
\?i_am=(?<x>[\w]+)&need=(?<y>[\w]+)&s=
答案 2 :(得分:-1)
试试这个:
<script type="text/javascript">
var re = /=(.*?)&/;
var sourcestring = "?i_am=busy&need=fun&s=";
var results = [];
var i = 0;
for (var matches = re.exec(sourcestring); matches != null; matches = re.exec(sourcestring)) {
results[i] = matches;
for (var j=0; j<matches.length; j++) {
alert("results["+i+"]["+j+"] = " + results[i][j]);
}
i++;
}
</script>
这对你有帮助。