简单Nodejs正则expression式:从两个string之间提取文本

我试图从以下URL中提取Vine ID:

https://vine.co/v/Mipm1LMKVqJ/embed 

我正在使用这个正则expression式:

 /v/(.*)/ 

并在此处进行testing: http : //regexpal.com/

…但它匹配V并closures“/”。 我怎样才能得到“Mipm1LMKVqJ”,什么是在Node中做到这一点最干净的方式?

您只需参考第一个匹配组,以仅打印匹配结果。

 var re = new RegExp('/v/(.*)/'); var r = 'https://vine.co/v/Mipm1LMKVqJ/embed'.match(re); if (r) console.log(r[1]); //=> "Mipm1LMKVqJ" 

注意:如果url经常改变,我推荐使用*? 以防止你的匹配贪婪。

虽然从以下url,也许考虑分裂。

 var r = 'https://vine.co/v/Mipm1LMKVqJ/embed'.split('/')[4] console.log(r); //=> "Mipm1LMKVqJ" 

你根本不需要regexp

url模块是你想要的

 var url = require("url"); url.parse("https://vine.co/v/Mipm1LMKVqJ/embed"); 

产量

 { protocol: 'https:', slashes: true, auth: null, host: 'vine.co', port: null, hostname: 'vine.co', hash: null, search: null, query: null, pathname: '/v/Mipm1LMKVqJ/embed', path: '/v/Mipm1LMKVqJ/embed', href: 'https://vine.co/v/Mipm1LMKVqJ/embed' } 

如果你想要更多的手持

 url.parse("https://vine.co/v/Mipm1LMKVqJ/embed").path.split("/")[2]; // "Mipm1LMKVqJ"