Javascript:正则表达式获取URI的特定部分

时间:2015-06-08 15:57:04

标签: javascript regex

是否有一行javascript会返回下面从window.location.pathname突出显示的URI的粗体部分?

  • / 竞技场 /
  • / en / 竞技场 /(忽略两个字母的语言代码 - 不是设置列表)
  • / pt-br / 竞技场 /(用连字符忽略四个字母的lang代码 - 不是设置列表)
  • / en / 竞技场 /会议室/(忽略网址的其他部分)

对于奖励积分,如果URI为 / ,我希望它返回 Home

我想在一个只接受一行代码作为返回函数的标记管理器中使用它,因此需要单行函数。

同样,还有一个额外的正则表达式,它还可以返回上述URI的语言代码部分: en pt-br 或任何其他匹配的语言代码这两种模式中的任何一种,如果不存在,默认返回 en

1 个答案:

答案 0 :(得分:0)

使用非捕获/可选的正则表达式组来查找语言代码。捕获第一组非/个字符。如果不匹配,请设置为默认值Home

var regex = /^\/(?:[a-z]{2}(?:-[a-z]{2})?\/)?([^/]+)/,
    matches = window.location.pathname.match(regex);

var page = matches ? matches[1] : 'Home';
console.log(page); // Arena

同样,您可以选择捕获语言部分:

var regex = /^\/(?:([a-z]{2}(?:-[a-z]{2})?)\/)?([^/]+)/,
    matches = window.location.pathname.match(regex);

var language = matches ? matches[1] : 'en',
    page = matches ? matches[2] : 'Home';

<强> Demo