0

我有一个场景,我将获得作为路径和查询参数的输入,而在值的位置,我将获得一个正则表达式。

正则表达式输入包含 & ,它是查询参数中的分隔符。

`Input :` '/austin/query.html?dept=([^&]*)&group=([^&]*)'

我想([^&]*)动态地从查询参数中获取这个正则表达式。

任何想法或建议都可能是愚蠢/基本的问题,请帮忙?

4

1 回答 1

2

在发送请求之前对查询参数进行 URL 编码很重要。这有助于避免出现具有特殊含义的字符(?=&#等)的问题。

因此,与其在正则表达式中发送文字和字符&,不如对其进行 URL 编码%26

/austin/query.html?dept=([^%26]*)&group=([^%26]*)

当这个被querystring模块解析时,它会自动转换回和字符。

const querystring = require('querystring');
const URL = require('url');

function parseQueryParamsFromUrlPath(urlPath) {
  const { query } = URL.parse(urlPath);
  return querystring.parse(query);
}

parseQueryParamsFromUrlPath('/austin/query.html?dept=([^%26]*)&group=([^%26]*)');
// Output: { dept: '([^&]*)', group: '([^&]*)' }
于 2018-05-27T01:08:14.267 回答