Javascript - 正则表达式无法处理多个元素

时间:2016-03-24 09:17:47

标签: javascript regex tinymce

我目前正在为wordpress构建我的第一个tinymce插件。该插件正在向内容添加列,当我只使用一组列时,它已经正在运行。但是当我使用多组列时,我的正则表达式失败了(参见示例)。

这是我的代码,从tinymce中的html获取短代码:

function getShortcode (content) {
  return content.replace(
    /<div class="row">(.*)<\/div>/g,
    function (a, b) {
      var out = '';
      out = b.replace(
        /<div class="large-6 columns"><p>([\s\S]*?)<\/p><\/div><div class="large-6 columns"><p>([\s\S]*?)<\/p><\/div>/g,
        function (a, col_1, col_2) {    
          return '[row][col6]' + col_1 + '[/col6][col6]' + col_2 + '[/col6][/row]';
        });
      return out;
    });
}

Here is a jsfiddle showing that it works on one element, but fail when i have multiple sets of columns.

这是一组列的代码:

<div class="row">
    <div class="large-6 columns"><p>Content 1</p></div>
    <div class="large-6 columns"><p>Content 2</p></div>
</div>

获取一组列的短代码时,它可以很好地返回(参见jsfiddle):

[row][col6]Content 1[/col6][col6]Content 2[/col6][/row]

这是我尝试获取多组列的结果:

[row][col6]Content 1[/col6][col6]Content 2[/col6][/row]
</div><div class="row">[row][col6]Content 1[/col6][col6]Content 2[/col6][/row]

如您所见,当我使用多组列时,我会收到一些不需要的div关闭和打开标记。

我对正则表达式很陌生,想了解更多。有人可以帮我解决问题并向我解释我做错了什么,所以我可以从错误中吸取教训吗?

0 个答案:

没有答案