经过一番搜索,我未能找到一个关于URL片段可以使用哪些字符的好答案。我正在编写一段JavaScript脚本,将利用URL片段。
我希望通过不让URL看起来太复杂,使其更加易于识别。所以我想知道是否可以在URL片段中使用类似“:,?,&或!”这样的字符,但仍然保持其有效性。
我的URL片段应包含以下值:
- order-by
- id
- desc或asc
- path
- /完整/转义/路径/在这里/
经过一番搜索,我未能找到一个关于URL片段可以使用哪些字符的好答案。我正在编写一段JavaScript脚本,将利用URL片段。
我希望通过不让URL看起来太复杂,使其更加易于识别。所以我想知道是否可以在URL片段中使用类似“:,?,&或!”这样的字符,但仍然保持其有效性。
我的URL片段应包含以下值:
片段标识符组件可以包含以下内容:
0
- 9
a
- z
A
- Z
?
/
:
@
-
.
_
~
!
$
&
'
(
)
*
+
,
;
=
%
后面跟着两个十六进制数字)在这个文档中,您将找到所有需要了解的内容。
fragment = *( pchar / "/" / "?" )
这意味着片段可以不包含任何内容或(任意组合):
/
?
pchar
的定义请参考附录A中的内容,了解如何定义pchar:
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
因此,这里添加了以下内容:
:
@
unreserved
的定义现在查看如何定义unreserved:
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
这里添加了以下内容:
-
.
_
~
ALPHA
和DIGIT
的定义检查一下如何定义ALPHA
和DIGIT
。它们没有列在附录中,因为它们来自核心ABNF规则,在第1.3节中解释:
ALPHA(字母),[...] DIGIT(十进制数字)[...]
这将添加:
a
-z
,A
-Z
0
-9
pct-encoded
的定义检查pct-encoded的定义:
pct-encoded = "%" HEXDIG HEXDIG
这允许任何百分比编码字符。
sub-delims
的定义检查sub-delims的定义:
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
这将添加:
!
$
&
'
(
)
*
+
,
;
=
^([-?/:@._~!$&'()*+,;=a-zA-Z0-9]|%[0-9a-fA-F]{2})*$
(根据您的正则表达式方言,可能需要进行一些转义。) - zrajmquerySelector
时需要对其进行转义,即使用\\:
。 - zed要找到有效的字符有点棘手,但是上面注释的文件确实包含了这些信息,如果您深入阅读,就能发现。
可用的字符如下: