gpt4 book ai didi

javascript - 单个正则表达式从多行输入中删除空行和双空格

转载 作者:行者123 更新时间:2023-12-02 21:57:57 30 4
gpt4 key购买 nike

我想组合两个正则表达式函数来清理一些文本区域输入。我想知道这是否可能,或者我是否应该将其保留为两个单独的(工作正常,但看起来不那么漂亮或干净)。

我已经调整了其中一个,以便它们利用全局和多行(/gm),并且不被任何内容替换('')。我尝试在任何位置使用括号和垂直/或线条,但它永远不会给出预期的结果,所以我只能假设有一种我忽略的方法,或者我应该保持原样。

正则表达式 1:/^\s+[\r\n]/gm

正则表达式 2:/^\s+| +(?= )|\s+$/gm

当前在 JavaScript 中:string.replace(/^\s+[\r\n]/gm,'').replace(/^\s+| +(?= )|\s+$/gm, '')

目标是删除:

  • 每行开头和结尾有空格
  • 空行(包括开头和结尾的空行)
  • 双空格

没有它最终在同一行上。单换行符 (\r\n) 最后应该仍然存在。

正则表达式 1 删除任何空行 (^\s+[\r\n]),正则表达式 2 trim 开头的空格 (^\s+) >) 和结束 (\s+$),并删除 (+(?= )) 之间的双倍(以及三倍、四倍等)空格。

输入:


Let's
make this
look

a little


nicer
and
more

readible


输出:

Let's
make this
look
a little
nicer
and
more
readible

编辑:非常感谢Wiktor Stribiżew and his comment对于这个完整的解决方案:

/^\s*$[\r\n]*|^[^\S\r\n]+|[^\S\r\n]+$|([^\S\r\n]){2,}|\s+$(?![^])/gm

最佳答案

我建议使用替换模板"$1$2" ( demo ) 使用以下表达式:

/^\s*|\s*$|\s*(\r?\n)\s*|(\s)\s+/g

说明:

  • ^\s* - 匹配文本开头的空格
  • \s*$ - 匹配文本结尾处的空格
  • \s*(\r?\n)\s* - 匹配位于不同行的两个单词之间的空格,捕获一个 CRLF 到组 $1
  • (\s)\s+ - 捕获 2 个以上空白字符序列中的第一个空白字符以将 $2 分组

关于javascript - 单个正则表达式从多行输入中删除空行和双空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59957000/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com