2017-01-18 3 views
0

У меня есть много ссылок, как эти:Regex для неизвестного числа переменных, разделенного/в экспрессе, маршрут

router.use('/foo' , require('./foo')); 
router.use('/foo/1' , require('./foo')); 
router.use('/foo/2' , require('./foo')); 
router.use('/foo/1/1' , require('./foo')); 
router.use('/foo/2/3/4/.../n' , require('./foo')); 

Есть ли способ, чтобы написать регулярное выражение, которое совпадает и отделить их от / разделителя? например:

//for example for /foo/2/3/4/.../n url. 
var first_var = req.param[0]; // 2 
var last_var = req.param[req.param.length-1]; // n 

Я уже пишу один для соответствия. не раздельно:

router.use('/foo/*' , require('./foo')); 
+0

Я не понимаю, почему ты хотел, чтобы отделить их, если все маршруты использовать './foo? – Tom

+0

Я хочу использовать их в некоторой другой логической функции. его не о ./foo. – somename

+0

Разделяет ли строка пути «/» не то, что вы хотите сделать? – Tom

ответ

1

Поскольку вы пытаетесь сделать это в regex, это регулярное выражение будет работать для вас. Дай мне знать, если я пропустил какой-то случай.

([^\/]+) 

const regex = /([^\/]+)/g; 
 
const str = `/foo/2/3/4/5/n`; 
 
let m; 
 

 
m = str.match(regex); 
 

 
for(var i = 0; i< 5; i++) { 
 
    if(i === 0) 
 
    continue; 
 
    console.log(`Parameter ${i} = ${m[i]}`); 
 
}

+0

Я хотел регулярное выражение в 'router.use'. вы сделали это в javascript. Кстати, я думаю, что нет никакого способа сделать это в экспресс. я делаю +1. – somename

Смежные вопросы