javascript - Showdown Markdown 不替换字符串

标签 javascript regex node.js ghost-blog showdown

我目前正在尝试使用 Ghost 博客平台添加我自己的扩展来摊牌。我试图做到这一点,以便有人可以输入 map ,然后输入英国邮政编码,并将其渲染到 map 上,就像 [map bh278bf] 一样。我已确保maps.js 扩展已添加并且可以按照我测试的那样工作。然而我的正则表达式知识几乎不存在。我已经让正则表达式可以工作 here在 Regexr.com 中,但是当我运行它时没有任何反应,我使用了相同的 codepen,它也不起作用,我不知道该怎么做。我需要一些帮助来识别字符串!

表达式:

/(\[map )([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]?[0-9][ABD-HJLN-UW-Z]{2}|GIR 0AA)(\])/igm

扩展(maps.js)

(function(){
    var maps = function(converter) {
        return [
            { 
                type: 'output', 
                filter: function(source) {
                    return source.replace(/(\[map )([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]?[0-9][ABD-HJLN-UW-Z]{2}|GIR 0AA)(\])$/gim, function(match) {
                        return "<span>Map will go here</span>";
                    });
                }
            }
        ];
    };
    // Client-side export
    if (typeof window !== 'undefined' && window.Showdown && window.Showdown.extensions) { window.Showdown.extensions.prettify = maps; }
    // Server-side export
    if (typeof module !== 'undefined') module.exports = maps;
}());

最佳答案

你已经很接近了,但还没有到达。

  1. 您的正则表达式无效,应为:

    /[ map (GIR 0AA|A-PR-UWYZ ?[0-9][ABD-HJLNP-UW-Z]{2})]/ig

使用 i 不区分大小写。查看答案 https://stackoverflow.com/a/29302162/475884

  • 实际导出无效,您应该使用 window.Showdown.extensions.pretify =maps 来代替 window.Showdown.extensions.maps =maps
  • 你去哪里

    // https://stackoverflow.com/questions/164979/uk-postcode-regex-comprehensive
    
    (function(){
        var maps = function(converter) {
            return [ { 
                type: 'lang', 
                filter: function(text) {
                    return text.replace(/\[map (GIR 0AA|[A-PR-UWYZ]([A-HK-Y]([0-9][A-Z]?|[1-9][0-9])|[1-9]([0-9]|[A-HJKPSTUW])?) ?[0-9][ABD-HJLNP-UW-Z]{2})\]/ig, 'map');
                }
            }];
        };
        // Client-side export
        if (typeof window !== 'undefined' && window.Showdown && window.Showdown.extensions) { window.Showdown.extensions.maps = maps; }
        // Server-side export
        if (typeof module !== 'undefined') module.exports = maps;
    }());
    

    您可以看看下面的fsfiddle了解详情。

    关于javascript - Showdown Markdown 不替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28517760/

    相关文章:

    java - 使用java正则表达式在管道内查找匹配项

    regex - 在记事本中每行的末尾添加一个字符)

    javascript - 我必须在 Next.js 项目中使用 express 吗?

    javascript - Highcharts 连接散点图和饼图与单个图例

    javascript - 如何在 Javascript 中用正则表达式匹配精确的位数

    javascript - 从字符串中获取 url 作为数组

    javascript - 如何从旧的 then 调用中访问属性?

    node.js - React Starter Kit 报告无法解释的丢失包

    javascript - 过滤从当月第一天到当前日期的日期

    javascript - JQUERY 每个按钮后的第一个元素