从textarea删除换行符和段落符

时间:2019-10-07 20:46:57

标签: javascript regex

我正在尝试从文本区域的任何给定输入中“拉平”(删除换行符和段落换行符)。

假设输入为:

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

有什么想法吗?预先感谢!

3 个答案:

答案 0 :(得分:2)

关于CRLF:
-按照@Unimportant的建议,将\s+替换为空格。
原因是格式化结果无论如何都无法正常工作。
最好与均匀的分离保持一致。

关于段落的中断和中断:
-将</?p\s*>|<br\s*/>替换为空。

因此,两个独立运行的正则表达式可以完成这项工作。

答案 1 :(得分:1)

在您的匹配条件中添加空格字符\s,并添加一个*表示可以同时进行多个匹配。从这里开始,您只想用空字符串而不是空格替换此类字符。

这可以在下面看到:

const val = `select * where { 
    ?s ?p ?o .
} limit 100 `;

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

答案 2 :(得分:1)

我建议

val = val.replace(/[^\S\r\n]*[\r\n]+\s*/g, ' ')

这会将带有相邻空白的换行符(包括任何连续的空白行)“缩小”到单个空格中。

在这里

  • [^\S\r\n]*-匹配0+个水平空格
  • [\r\n]+-1个以上的CR或LF字符
  • \s*-任意0 + whitespce字符。

请参见regex demo