是否有已知的 JavaScript 正则表达式可以匹配整个 URL 连接字符串?
protocol://user:password@hostname:12345/segment1/segment2?p1=val1&p2=val2
我正在寻找一个正则表达式来帮助我将这样的连接字符串转换为对象:
{
protocol: 'protocol',
user: 'user',
password: 'password',
host: 'hostname:12345',
hostname: 'hostname',
port: 12345,
segments: ['segment1', 'segment2'],
params: {
p1: 'val1',
p2: 'val2'
}
}
另外,我希望连接字符串的每个部分都是可选的,因此缺少的参数可以由环境中的值填充。
例子:
protocol://
server:12345
-
:12345
- 仅适用于港口
user:password@
user@
:password@
/segment1
?p1=val1
- 等等...
标准RFC 3986当涉及到有效符号时,规则应适用于所有部分。
我正在寻找可以在 Node.js 和所有浏览器中工作的东西。
我已经在其中逐个进行了单独的解析连接字符串,但问题是 - 它不允许验证,即判断整个事情是否有效。