拿这个网址
http://service.com/room/dothings?adsf=asdf&dafadsf=dfasdf
http://service.com/room/saythings?adsf=asdf&dafadsf=dfasdf
说我是否要捕获dothings
,saythings
,
我现在是以下正则表达式
/room\/(.+)\?/.exec(url)
在结果中我得到了这个。
["room/dothings?", "dothings"]
我应该写什么来获取上面的字符串,只有一个数组中的项目。
答案 0 :(得分:1)
我知道这并没有回答你的问题,但使用正则表达式解析网址并不容易,在某些情况下甚至不安全。我会在没有正则表达式的情况下进行解析。
在浏览器中:
var parser = document.createElement('a');
parser.href = 'http://example.com/room/dothings?adsf=asdf&dafadsf=dfasdf';
在node.js中:
var url = require('url');
var parser = url.parse('http://example.com/room/dothings?adsf=asdf&dafadsf=dfasdf');
然后在两种情况下:
console.log(parser.pathname.split('/')[2]);
答案 1 :(得分:1)
这实际上很容易。你快到了。
关于在正则表达式中解析html的所有强制性免责声明......
<script>
var subject = 'http://service.com/room/dothings?adsf=asdf&dafadsf=dfasdf';
var regex = /room\/(.+)\?/g;
var group1Caps = [];
var match = regex.exec(subject);
while (match != null) {
if( match[1] != null ) group1Caps.push(match[1]);
match = regex.exec(subject);
}
if(group1Caps.length > 0) document.write(group1Caps[0],"<br>");
</script>
输出 dothings
如果你在主题中添加字符串,你可以for (key in group1Caps)
,它会吐出所有的匹配。