【发布时间】:2018-06-28 12:28:12
【问题描述】:
我已将查询参数格式从 &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];
}
它以无限循环结束
我做错了什么?
【问题讨论】:
-
它以无限循环结束,因为您没有使用
g修饰符编译正则表达式。正则表达式索引不是高级的,while总是从字符串开始。另外,如果值中有-,则添加-:let re = new RegExp(`^.*/(Key)/([a-zA-Z0-9-]+).*$`, "g");。但是,如果您不希望有多个匹配项,只需将while替换为if,则可以在没有g、new RegExp(`^.*/(Key)/([a-zA-Z0-9-]+).*$`)的情况下使用正则表达式。 -
反正已经解释了很多次了,以stackoverflow.com/questions/31969913/…结尾为骗人的理由。
标签: javascript regex typescript