从 textarea 中删除换行符和分段符

我试图从 textarea 的任何给定输入中“展平”(删除换行符和分段符)。


假设输入是:


select * where { 

    ?s ?p ?o .

} limit 100 

预期的结果是:


select * where { ?s ?p ?o . } limit 100 

到目前为止,我已经设法使用以下代码删除了换行符:


val.replace(/$(\r|\n)(?=.)/gm, ' ');

目前给我的是:


select * where {    ?s ?p ?o . } limit 100

有什么想法吗?提前致谢!


qq_花开花谢_0
浏览 347回答 3
3回答

慕雪6442864

关于 CRLF:- 正如@Unimportant 建议的那样,替换\s+为空格。原因是格式化结果无论如何都不起作用。最好与甚至看起来分离保持一致。关于段落中断和中断:- 将被替换</?p\s*>|<br\s*/>为空。因此,2 个独立的 regex 相互独立运行就可以完成这项工作。

慕哥9229398

将空格字符添加\s到您的匹配条件中,并添加一个*以表示可以有多个并发匹配。从这里开始,您只需要将这些字符替换为空字符串而不是空格。这可以在以下内容中看到:const val = `select * where {&nbsp;&nbsp; &nbsp; ?s ?p ?o .} limit 100 `;console.log(val.replace(/$(\r|\n|\s)*(?=.)/gm, ''));

桃花长相依

我建议val&nbsp;=&nbsp;val.replace(/[^\S\r\n]*[\r\n]+\s*/g,&nbsp;'&nbsp;')这会将带有相邻空格的换行符(包括任何连续的空白行)“缩小”为单个空格字符。这里,[^\S\r\n]*&nbsp;- 匹配 0+ 个水平空格[\r\n]+&nbsp;- 1+ CR 或 LF 字符\s*&nbsp;- 任何 0+ 个 whitespce 字符。请参阅正则表达式演示。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript