RegExp以匹配url中的查询参数

时间:2018-06-28 12:28:12

标签: javascript regex typescript

我已将查询参数格式从&Key = Value更改为/ Key / Value。

现在我正尝试使用正则表达式在URL中解析它们。不知道我在做什么错,但这是我的代码

示例网址路径:http://localhost/MyApp/#!/Page1/SubPage1/SubPage2/Key/value-example

let re = new RegExp(`^.*/(Key)/([a-zA-Z0-9]+).*$`);
while (match = re.exec(url)) {
    params[match[1]] = match[2];
}

它以无限循环结束

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

我建议使用split(),而不是使用正则表达式。

var url = 'http://localhost/MyApp/#!/Page1/SubPage1/SubPage2/Key/value-example'
var keyName = 'Key'
var urlParts = url.split('/')
var keyIndex = urlParts.indexOf(keyName) // "Key" is at index #8
// Since the value appears right after the key, we can access it by increasing the index by 1
var value = urlParts[keyIndex + 1] // "value-example" is at index #9

这是命令url.split('/')的结果:

[ 'http:',
  '',
  'localhost',
  'MyApp',
  '#!',
  'Page1',
  'SubPage1',
  'SubPage2',
  'Key',
  'value-example' ]

所以我们要做的是在数组中找到所需键的索引并查看下一个值-index + 1。