javascript - REGEX - 当内部内容有换行符时 HTML 到简码中断

标签 javascript regex wordpress tinymce shortcode

我在我的 wordpress 主题中创建了一个简单的包装简码

我正在使用 ed.onBeforeSetContented.onPostProcess

来回切换

简码 [wrap vars="whatever"]my cool content[/wrap]在 TextView 中

html <div class="wrap">my cool content</div>可视化

这与这段代码配合得很好。

_get_wrap : function(co) {
    return co.content.replace(/\<div(.*?)?\>(?:(.+?)?\<\/div\>)?/g, function(a,b,c) {               
        var arr = b.replace(/['"]/g,'').split(' ');
        var params = new Object();
        for (var i=0;i<arr.length;i++){
            var p = arr[i].split('=');
            params[p[0]] = p[1];
        }
        if ( params['class'] == "wrap" )
            return '[wrap'+b+']'+c+'[/wrap]';
        return a;
    });
}

不幸的是,如果有 returnnew line在开始和结束短代码之间的内容中,它失败了

我怎样才能保留 c当有换行符时,上面的代码内容是否完整?

最佳答案

. 通配符不匹配换行符。要匹配换行符,您必须使用以下内容:[^]:

_get_wrap : function(co) {
    return co.content.replace(/\<div([^]*?)?\>(?:([^]+?)?\<\/div\>)?/g, function(a,b,c) {               
        var arr = b.replace(/['"]/g,'').split(' ');
        var params = new Object();
        for (var i=0;i<arr.length;i++){
            var p = arr[i].split('=');
            params[p[0]] = p[1];
        }
        if ( params['class'] == "wrap" )
            return '[wrap'+b+']'+c+'[/wrap]';
        return a;
    });
}

关于javascript - REGEX - 当内部内容有换行符时 HTML 到简码中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17432831/

相关文章:

regex - 否定 RE2 语法中字符串开头的单词匹配?

wordpress - 在Windows上使用Docker时的Wordpress写访问

php - 如何在 PHP 中声明一个可以跨模板使用的全局变量?

Javascript替代高度、宽度控制

javascript - 使用 Node.JS 下载 Torrent

.net - 在客户端单击时获取 javascript 中的 .net 下拉列表的 Id

javascript - 使用node.js调用同一目录中的文件时出错

javascript - jquery grep,使用正则表达式过滤

python - 我需要使用什么模式来分割字符?

mysql - Wordpress 限制查询结果