正则表达式从字符串中提取

时间:2015-03-10 13:52:09

标签: javascript regex

我有一个像这样的字符串

?i_am=busy&need=fun&s=

busyfun部分可以更改为带破折号的字符串。我想将这两个提取到变量中以与jquery一起使用。我需要的是一个可以提取它们的正则表达式,但我的正则表达式知识充其量是有限的。

感谢任何帮助。

3 个答案:

答案 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>

这对你有帮助。