Javascript 用于在不包含标记的行上用br替换换行符的RegExp
在String.replace()中是否有一个RegExp可以用来在包含html标记的文本中用br标记替换换行符…就好像它不包含标记一样(完全忽略只包含标记的行) e、 g如果我有以下文本+html输入Javascript 用于在不包含标记的行上用br替换换行符的RegExp,javascript,html,regex,Javascript,Html,Regex,在String.replace()中是否有一个RegExp可以用来在包含html标记的文本中用br标记替换换行符…就好像它不包含标记一样(完全忽略只包含标记的行) e、 g如果我有以下文本+html输入 <p> line one line <b>two</b>bold line three </p> 第一行 第二行粗体 第三行 将成为 <p> line one<br> line
<p>
line one
line <b>two</b>bold
line three
</p>
第一行
第二行粗体
第三行
将成为
<p>
line one<br>
line <b>two</b>bold<br>
line three
</p>
第一行
第二行粗体字
第三行
任何帮助都是非常严格的我认为这对regex来说不是一份好工作。您最好使用
FIFO
缓冲区一次读取两行,如果第一行只有一个标记(我猜您可以使用正则表达式来检测),您只需读取下一行(丢弃带标记的行)并重做。如果在第一行中未检测到标记,请将
附加到第二行并替换该行
这里有一个快速的n-dirty正则表达式来解析标记(请注意,这只是为了演示,它不会处理格式错误的标记,并且可能会很容易损坏):
还有玩的地方
对于缓冲区,您可以使用带有shift()
和push()
的Array
来分别清除旧行和读取下一行。用正则表达式检查数组中的第一个元素,如果通过,则更改第二个元素并用新的替换文件中的字符串
下面是它的外观:
< test = ['first', 'second']
> Array [ "first", "second" ]
< test.shift()
> "first"
< test.push('third')
> 2
< test
> Array [ "second", "third" ]
数组[“第一”、“第二”]
“第一”
2
<测试
>数组[“第二”、“第三”]
是它返回的内容。不太清楚,但这是一个想法:
str = str.replace(/([^>]) *\r?\n(?! *<)/g, "$1<br>");
str=str.replace(/([^>])*\r?\n(?*
和任意数量的空格。如果没有第1行和第3行之间的区别,请使用负数进行检查。但是,您的第1行
前面有一行只包含一个标记,对吗()?根据你的规则,在这种情况下,它不应该有一个
。它不应该只是“除了最后一行以外的所有行都需要一个
”?你是对的,我更新了这篇文章,让它更清楚我需要什么。谢谢你指出错误。