【发布时间】:2024-05-15 16:20:01
【问题描述】:
有谁知道 GitHub.com 使用什么是正确的官方算法来编码内部标题的 fragment_id 链接?
(我希望这不再被视为过于宽泛的问题)。
我对 GitHub 风格的 Markdown 格式链接到内容标题的方式进行了逆向工程。这似乎很奇怪,所以我想我做错了什么。也许您知道如何改进它(链接除外,为了步骤的可读性,此处略过)。
首先我发现这样一个字符串
1.2.3-a Łukasz_testing? header `special characters`;.,links How+they%20 behave
将在那里编码为
123-a-%C5%81ukasz_testing-header-special-characterslinks-howthey20-behave.
我重新创建了相同的结果:
function(string) {
string = string.replace(/[A-Z]+/g,function(v) { return v.toLowerCase(); });
string = string.replace(/[^a-z0-9-\s\u00BF-\u1FFF\u2C00-\uD7FF\w]+/g,'');
string = string.replace(/[\s\t ]+/g, '-');
string = encodeURIComponent(string);
return string;
}
但它看起来很笨重。任何想法它与原版有多接近?
【问题讨论】:
-
你可以链接所有
replace。 -
string.replace(/[A-Z]+/g,function(v) { return v.toLowerCase(); });,不只是string.toLowerCase()?这也是题外话。你可以试试codereview.stackexchange.com -
我投票结束这个问题,因为它要求审查工作代码。或许应该迁移到codereview。
-
@meagar 不可能,因为它们不会小写非 ascii 字母数字字符
标签: javascript regex github utf-8 encode