JavaScript正则表达式使用一个字符两次

JavaScript正则表达式使用一个字符两次,javascript,regex,hash,match,Javascript,Regex,Hash,Match,所以我使用正则表达式从字符串中获取信息,问题是我需要在字符串中的/处启动和停止 这里有一个例子 var regexp = /\/(.*?)=(.*?)\//g; var url_hash = "/s=lorem+ipsum/p=2/"; var match; var result = {}; while ((match = regexp.exec(url_hash)) != null) { result[match[1]] = match[2]; }

所以我使用正则表达式从字符串中获取信息,问题是我需要在字符串中的
/
处启动和停止

这里有一个例子

var regexp = /\/(.*?)=(.*?)\//g;
    var url_hash = "/s=lorem+ipsum/p=2/";
    var match;
    var result = {};
    while ((match = regexp.exec(url_hash)) != null) {
     result[match[1]] = match[2];
  }

我可以毫无问题地抓取
结果['s']
,但是抓取
结果['p']
会有问题,因为
结果['s']
的结尾
/
结果['p']
的开头
//code>相同。如果我将字符串更改为
/s=lorem+ipsum//p=2/
,它工作得很好,但这当然很糟糕。那么,我如何解决这个问题,使其在
/
处结束和启动?我被卡住了,非常感谢您的帮助。

为什么您不能
拆分它呢

var result = {};
var url = "/#!/s=lorem+ipsum/p=2/".slice(4, -1).split('/');

for (i in url) {
  var value = url[i].split('=');
  result[value[0]] = value[1];
}

console.log(result);
使用此正则表达式:

/\/([^/=]+)=([^/]+)/
代码:

var regexp = /\/([^/=]+)=([^/]+)/g;
var url_hash = "/#!/s=lorem+ipsum/p=2/";
var match;
var result = {};
while ((match = regexp.exec(url_hash)) != null) {
   result[match[1]] = match[2];
   document.writeln(match[1] + ' = ' + match[2] + '<br>');
}
s = lorem+ipsum
p = 2

您可以在
=
之后自己确定零件的前瞻集,而不是将其添加到正则表达式中。前瞻集是“除正斜杠外的一切”


顺便说一句,我假设
=
前面的部分是类似单词的(即字母数字)

为什么不能使用
/\/(*?)=(*?)/g
作为正则表达式?我不知道,但除非我添加额外的斜杠,否则它不会获取
结果['p']
。继续测试。
(.*)
不会在Ian希望的地方结束。相反,结果['s']将包含
=lorem+ipsum/p=2/
谢谢,这正是我想要的解决方案。非常感谢。
var regexp = /\/(\w+)=([^/]+)/g;