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;