正则表达式从window.pathname中提取路径树

时间:2014-07-25 17:55:21

标签: javascript regex

假设我访问Javascript的window.pathname并获取/you/are/here

是否可以构建一个正则表达式,从头开始逐步匹配路径的每个部分?换句话说,my_regex.exec(window.pathname)会返回一个匹配数组,如下所示:

["/you", "/you/are", "/you/are/here", index: 0, input: "/you/are/here"]

2 个答案:

答案 0 :(得分:1)

不,正则表达式不会这样做。您应匹配“/ [a-zA-Z0-9] +”(或捕获标识符的内容),然后通过循环匹配来创建字符串。

答案 1 :(得分:0)

你应该能够像这样运行它:

location.pathname.match(/\w+/g)

那应该返回一个包含所有单词的数组。当然,路径也可以由空格和下划线组成,以及在url编码的情况下为%。所以也要涵盖这些:

location.pathname.match(/[\w_\s.%]+/g)

括号创建一个字符类,其中括号之间的任何字符都被视为字符的一部分。 在课堂上我们有\ w所有常规字符(A-Za-z0-9),后跟下划线(_);任何类型的空间(\ s);一段时间 (。);最后是百分号(%)。 在字符类之后我们添加+来表示想要找到至少一个,但尽可能多。 最后的g标志强制它变为全局,它应该返回一个包含所有命中的数组。