删除所有换行符,但只有一个中断除外?

时间:2016-02-26 23:41:56

标签: javascript regex

我有以下用户发送的带有分隔线的文本

Text of example in line 1.
(break line)
(break line)
(break line)
The text is very nice...
(break line)
(break line)
The end.

预期结果:

Text of example in line 1.
The text is very nice...
The end.

不:Text of example in line 1. The text is very nice... The end.

我如何在JavaScript(str.replace)中通过PHP中的AJAX接收

$text = strip_tags($text, '<br>');

谢谢你的回答!但我测试了所有..然后我去看看我的DIV正在生成HTML代码,我相信这就是为什么它不起作用(RegEx)。如何忽略HTML元素以使用换行符进行发送文字?enter image description here

2 个答案:

答案 0 :(得分:4)

您可以使用正则表达式替换。

str = str.replace(/\n{2,}/g, "\n");

{2,}表示匹配前一个表达式中的两个或更多个。因此,任何2个或更多新行的序列都将被替换为单个换行符。

答案 1 :(得分:2)

虽然answer by @Barmar是正确的,但它不适用于不同的操作系统/平台。

不同的操作系统使用不同的字符组合作为换行符。

  1. Windows:\r\n = CR LF
  2. Unix / Linux:\n = LF
  3. Mac:\r = CR
  4. 请参阅\r\n , \r , \n what is the difference between them?

    我建议以下RegEx可以跨平台工作。

    str = str.replace(/(\r\n?|\n){2,}/g, '$1');
    

    Live RegEx Demo

    <强>解释

    1. ():捕获小组
    2. \r\n?:可选地匹配\r后跟\n。因此匹配
      • \r\n
      • \r
    3. |:RegEx中的OR条件
    4. \n:匹配\n
    5. {2,}:匹配前一个字符两次或多次
    6. g:全球旗帜
    7. $1:第一个捕获的组,即操作系统支持的单个换行符。