所以我使用正则表达式从字符串中获取信息,问题是我需要在字符串中的 /
处启动和停止。
举个例子
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/
它可以完美运行,但当然这很可怕。那么我该如何解决这个问题,让它在 /
处结束和启动呢?我被卡住了,感谢任何帮助。
最佳答案
使用这个正则表达式:
/\/([^/=]+)=([^/]+)/
代码:
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
关于JavaScript 正则表达式使用一个字符两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10868310/