GitHub.com 标题链接 - JavaScript

GitHub.com heading links - JavaScript

有谁知道 GitHub.com 用于为内部 headers 编码 fragment_id 链接的正确官方算法是什么?

(我希望这不再被视为太宽泛的问题)。

我对 GitHub 风格的 Markdown 格式链接到内容 headers 的方式进行了逆向工程。这似乎很奇怪,所以我想我做错了什么。也许您知道如何改进它(链接除外,为了步骤的可读性,这里跳过了它)。

首先我发现这样一个字符串 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;
}

但它看起来很笨重。知道它与原版有多接近吗?

我同意@elclanrs,链接看起来更简洁:

function(string) {
    return encodeURIComponent(string.replace(/[A-Z]+/g,function(v) { return v.toLowerCase(); })
                                    .replace(/[^a-z0-9-\s\u00BF-\u1FFF\u2C00-\uD7FF\w]+/g,'')
                                    .replace(/[\s\t ]+/g, '-'));
}

我不会寻找 "wiseass" 实现(例如 "one regex to rule them all"),此实现简单易读 - 这将使其易于维护。