我在我的 wordpress 主题中创建了一个简单的包装简码。
我正在使用 ed.onBeforeSetContent
和 ed.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;
});
}
不幸的是,如果有 return
或 new 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/