在Express.js中,我将如何编写一个路由/正则expression式来捕获所有美国州?

目前我的状态如下所示:

var states = 'AL|AK|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL...'; 

我想捕捉

mydomain.com/CA/more-stuff

分成两个独立的参数。 第一个与国家信息,第二个与附加。 我知道如何获得更多的信息:

 app.get('/' ??? + '/:additional', ...); 

我如何获取状态信息?

如果您将其定义为path中的参数…

 app.get('/:stateabbr/:additional', ...); 

你可以用app.param()来validation它:

 app.param('stateabbr', function (req, res, next, abbr) { var stateAbbrs = /AL|AK|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL|../i if (stateAbbrs.test(abbr)) { next() } else { next(new Error('Unrecognized State abbreviation.')); } }); 

试试这个

 var states = 'AL|AK|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL...'; app.get('/:state('+ states + ')/:additional', function(req,res,next){ res.send('state:'+req.params.state+',additional:'+req.params.additional); }) 

我已经testing过,它应该按照你的要求工作:)