匹配URL中路径的正确方式?(8)
Correct way to match path inside a URL? (8)
源于JavaScript,The Good Parts是用于匹配URL的正则表达式。
伪代码(每个数字代表一个子表达式)
/^(1)(2)(3)(4)(5)(6)(7)$/
在5点是这个正则表达式和其他一些东西。
[^?#]*
非常简单,它只是一个非字符类,用于匹配除?
或#
之外的所有内容,因为这些内容稍后将用于匹配查询和片段标识符。
但是,我想用一个不使用非^
的字符类来代替它
我不确定的第一件事是Unicode是否可以在路径中使用。如果不能,我打算使用ASCII字符集。
澄清:我不想使用负面前瞻,因为这模拟了非字符集。
参考:以下是完整的正则表达式,每个部分分为不同的行。
/^
(?:([a-zA-Z]+):)?
('/{0,3})
([a-zA-Z0-9.'-]+)
(?::('d+))?
(?:'/([^#?]*))?
(?:'?([^#]))?
(?:#(.*))?
$/
您还可以简化浏览器解析逻辑:
var parser = document.createElement('a');
parser.href = "http://example.com:3000/pathname/?search=test#hash";
parser.protocol; // => "http:"
parser.hostname; // => "example.com"
parser.port; // => "3000"
parser.pathname; // => "/pathname/"
parser.search; // => "?search=test"
parser.hash; // => "#hash"
parser.host; // => "example.com:3000"
允许的代码点是ASCII字母数字,并在此url规范中进行了描述。
URL代码点为ASCII字母数字、"!"、"$"、"&"、"'"、"(",")","*","+",",","-",".","/",":",";","=","?","@","_","~",以及范围U+00A0到U+D7FF、U+E000到U+FDCF中的码点,U+FDF0到U+FFEF,U+10000到U+1FFD,U+20000到U+2FFD,U+30000到U+3FFD,U+40000到U+4FFD,U+50000到U+5FFD,U+60000到U+6FFD,U+70000到U+7FFFD,U+80000到U+8FFFD,U+90000到U+9FFFD,U+A000到U+AFFD,U+B0000至U+BFFFD,U+C000至U+CFFD,U+D0000至U+DFFFD,U+E1000到U+EFFD,U+F0000到U+TFFFFD,U+100000到U+10FFFD。
W3的进一步参考可在此处获得:
- 使用Javascript/jQuery以编程方式将当前锚点/哈希/片段附加到任何表单操作url
- 修改 HTML 的方式使左键应带到下一个 URL
- 限制与AngularJS状态匹配的动态URL参数的最佳方式
- 使用javascript在chrome浏览器的新选项卡中以程序方式打开URL
- 用字符串和数字写视频源URL的正确方式是什么
- 使用ui路由器实现动态URL路由的最佳方式是什么
- 更改url位置的最佳方式
- 如何以编程方式在URL上执行javascript
- 更改基于目标将 URL 参数追加到链接的方式
- 以编程方式将 URL 加载到 ng 视图中
- 通过 JavaScript URL 可变快捷方式扩展 HTML URL
- jQuery:以最佳方式根据URL添加类
- 运行javascript以外的其他方式:从url
- AngularJS-处理手动输入URL状态的最佳方式
- 如何使用express JS以特定方式从URL中读取参数
- Javascript-切换元素只能用一种方式!还有URL附加所需的帮助
- 匹配URL中路径的正确方式?(8)
- 在url中传递数组的有效方式
- jQuery:向URL散列写入和读取参数的轻量级方式
- 使用JQuery以不可见的方式调用URL并返回成功/错误标志