摊牌降价不替换字符串

时间:2015-02-14 16:40:50

标签: javascript regex node.js ghost-blog showdown

我目前正在尝试使用ghost博客平台将自己的扩展添加到showdown。我试图让它成为有人可以输入地图然后输入英国邮政编码并将其渲染到地图,如[map bh278bf]。我已经确定添加了maps.js扩展名,并且我已经测试过它。然而,我的正则表达式知识几乎不存在。我已经让RegEx在Regexr.com中工作here,但是当我运行时没有任何反应,我使用了相同的代码,它也没有用,我不知道该怎么做。我需要一些帮助来识别字符串!

表达:

/(\[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 个答案:

答案 0 :(得分:1)

你很亲密,但还没有。

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

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

  2. i表示不区分大小写。见答案 https://stackoverflow.com/a/29302162/475884

    1. 实际导出无效,而window.Showdown.extensions.prettify = maps应该window.Showdown.extensions.maps = maps
    2. 你得到的地方

      // 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了解详细信息。