所以我正在使用正则表达式从字符串中获取信息,问题是我需要启动并停在字符串中的/
。
这是一个例子
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];
}
我可以毫无问题地抓住result['s']
,但抓住result['p']
会出现问题,因为/
的结尾result['s']
与起始/
相同result['p']
。如果我将字符串更改为/s=lorem+ipsum//p=2/
它完美无缺,但当然这很可怕。那么我该如何解决这个问题,以便它在/
结束并启动?我被卡住了,感谢任何帮助。
答案 0 :(得分:1)
为什么你不能split
呢?
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);
答案 1 :(得分:1)
使用此正则表达式:
/\/([^/=]+)=([^/]+)/
<强>代码:强>
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
答案 2 :(得分:1)
您可以在=
自己之后确定部件的前瞻设置,而不是将其添加到正则表达式中。先行集是“除了正斜线之外的一切”。
var regexp = /\/(\w+)=([^/]+)/g;
顺便说一句,我假设=
之前的部分是字样的(即字母数字)