繁体   English   中英

正则表达式 - 用两个换行符替换多个换行符并在最后删除换行符?

[英]Regex - replace multiple line breaks with two line break and remove line break if at the end?

我这样做(+ JSON.stringify())通过ajax将换行发送到我的mysql服务器:

var newChatComment = varChatComment.replace(/\r\n|\r|\n/g,'\n');

我怎样才能用两个换行符替换多个换行符,如果换行符是否在最后...删除换行符?

  • 加上只有一个换行...保持这个换行符?

编辑:指向的重复示例不考虑在换行符结束时删除换行符的事实。 所以这是一个新问题

如果您需要在字符串的开头保留一个换行符,请使用

 var varChatComment = "\\r\\n\\n1\\r\\n2\\n\\n\\n3\\r\\r\\n4\\r\\n\\r\\n"; var newChatComment = varChatComment.replace(/((?:\\r\\n?|\\n)+)$|(?:\\r\\n?|\\n){2,}/g, function ($0,$1) { return $1 ? '' : '\\n\\n'; }); console.log(newChatComment); 

请注意,该模式是围绕匹配的(?:\\r\\n?|\\n)构造构建的:

  • \\r\\n? - CR和可选的LF
  • | - 要么
  • \\n - LF符号。

细节

  • ((?:\\r\\n?|\\n)+)$ - 字符串末尾有1个或更多换行符(将被删除)
  • | - 要么
  • (?:\\r\\n?|\\n){2,} - 2个或更多换行符(任何样式)(这将变为2个换行符。

((?:\\r\\n?|\\n)+)$| alternative匹配字符串末尾的任何换行符,如果找到,则用空字符串替换这些换行符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM