使用JavaScript正则表达式获取MVC样式路由数据(URL最后一个单词)

时间:2013-08-20 18:05:07

标签: javascript jquery asp.net asp.net-mvc

我需要的是能够从MVC URL中提取路由数据。我在SO上找到了这个解决方案,但是它不适合我的需求,因为我需要访问两个不仅仅是一个段:

var URL = "http://www.xzy.com/AMS/Audit/Agency/Blah";
var number = URL.match(/(\d+)$/g);

此正则表达式代码抓取最后一个段"Blah"。我如何抓住"Agency"?考虑到最后两个部分是单词。

1 个答案:

答案 0 :(得分:3)

您可以使用\w+来匹配单词。要确保单词是最后一个单词,您可以使用前瞻:(?=\/\w+$)

var URL = "http://www.xzy.com/AMS/Audit/Agency/1A0A0A1A7A3A9A7";
var agency = URL.match(/(\w+)(?=\/\w+$)/g); // ["Agency"] 
var number = URL.match(/(\w+)$/g); // ["1A0A0A1A7A3A9A7"] 

您也可以使用RegExp#exec()将值作为字符串(不是上面的数组)获取:

var URL = "http://www.xzy.com/AMS/Audit/Agency/1A0A0A1A7A3A9A7";
var matches = /(\w+)\/(\w+)$/g.exec(URL);
var agency = matches[1]; // Agency
var number = matches[2]; // 1A0A0A1A7A3A9A7

检查demo jsfiddle here两者。