用javascript包装大的降价段落
我试图找到大段落(超过一定数量的字符)并将其包装成一个跨度。目前我正在这样做:用javascript包装大的降价段落,javascript,regex,replace,markdown,Javascript,Regex,Replace,Markdown,我试图找到大段落(超过一定数量的字符)并将其包装成一个跨度。目前我正在这样做: output.replace(/(\n{2}|^)([^\n{2}]{500,})(\n{2}|$)/mg, '$1<span class="warning-big-paragraph">$2</span>$3'); 它没有把第二段括起来。这一部分不像你想象的那样。除新行、{、2或}外,它将匹配500或更多的任何字符。试试这个: var pattern = /(\n{2}|^)((?:[^\
output.replace(/(\n{2}|^)([^\n{2}]{500,})(\n{2}|$)/mg, '$1<span class="warning-big-paragraph">$2</span>$3');
它没有把第二段括起来。这一部分不像你想象的那样。除新行、
{
、2
或}
外,它将匹配500或更多的任何字符。试试这个:
var pattern = /(\n{2}|^)((?:[^\n]|[^\n]\n[^\n]){500,})(\n{2}|$)/mg
这将匹配一对新行字符或字符串的开头,后跟500个或更多非新行字符或与任何其他新行字符不相邻的新行字符,后跟一对新行字符或字符串的结尾
但这里仍然存在一些问题:
var pattern = /(\n{2}|^\n|^)((?:[^\n]|[^\n]\n[^\n]){500,})(?=\n{2}|\n$|$)/mg
这将匹配一对新行字符、字符串开头和单个新行字符,或字符串开头,后跟500个或更多非新行字符或与任何其他新行字符不相邻的新行字符,后跟一对新行字符、单个新行字符和字符串结尾,或字符串的末尾。最后一部分是a,因此它不包括在比赛中,这意味着对于连续两场比赛,它可以用作前一场比赛的条件,也可以用作下一场比赛的条件
您可以对其进行测试。暴力手段总是有的:
output = output.split("\n\n").map(function(para) {
return (para.length > 500
? ('<div class="warning-big-paragraph">' + para + '</div>')
: para);
}).join("\n\n");
|@T.J.Crowder元素的类型无关紧要。我只想添加一些背景色作为警告。@Arash:然后为了避免创建无效文档,请使用
div
@T.J.Crowder谢谢!完成!:)抱歉说得不够清楚。降价中的段落由两行新行分隔。所以最后两行属于一段。@Arash:Doh!我知道。。。对不起。:-)谢谢,但我不能让它工作。在@ArashBadieModiri获得战利品:对我有用:()。
output = output.split("\n\n").map(function(para) {
return (para.length > 500
? ('<div class="warning-big-paragraph">' + para + '</div>')
: para);
}).join("\n\n");
var paras;
var index;
var para;
paras = output.split("\n\n");
for (index = 0; index < paras.length; ++index) {
para = paras[index];
if (para.length > 500) {
paras[index] = '<div class="warning-big-paragraph">' + para + '</div>';
}
}
output = paras.join("\n\n");