JavaScript的:如何使用正则表达式从字符串中删除空行? [关闭]([removed] h

2019-09-01 23:03发布

我需要使用JavaScript来删除一个HTML文本框中空行。 空行可以在任何地方的textarea元素。 一个空行一样可以退货或空格再加上回报。

我期待一个正则表达式解决这个。 下面是一些我试过了,但他们没有工作,想不通为什么:

/^\s*\r?\n/g   

/^\s*\r?\n$/g

编辑1

看来,解决方案(我修改了一点)由aaronman和m.buettner建议工作:

string.replace(/^\s*\n/gm, "") 

谁能告诉我,为什么第一次的正则表达式不工作?

编辑2

读取所有有用的答案后,我想出了这一点:

/^[\s\t]*(\r\n|\n|\r)/gm

难道这会是一个涵盖所有情况?

编辑3

这是最简洁的一个覆盖所有空格(空格,制表符)和平台(Linux,Windows和Mac)。

/^\s*[\r\n]/gm

非常感谢m.buettner!

Answer 1:

你的模式似乎好了,你只需要包含多修饰符m ,使^$匹配行的开头和结尾,以及:

/^\s*\n/gm

如果没有m ,锚只匹配字符串的开头和结尾。

请注意,您在Mac行尾(只错过了\r )。 这将有助于在这种情况下:

/^\s*[\r\n]/gm

还要注意的是(在这两种情况下),你不需要匹配可选\r在前面\n明确,因为这是采取由护理\s*

由于地塞米松在评论中指出,这将无法清除的最后一行,如果它仅由空间(并没有换行后话)。 要解决这个问题的一种方法是使实际的换行符可选的,但之前包括结束线的锚。 在这种情况下, 必须匹配行虽然结束正确:

/^\s*$(?:\r\n?|\n)/gm


Answer 2:

我相信这会工作

searchText.replace(/(^[ \t]*\n)/gm, "")


Answer 3:

这应该做的伎俩,我认为:

var el = document.getElementsByName("nameOfTextBox")[0];
el.value.replace(/(\r\n|\n|\r)/gm, "");

编辑:删除三种类型的换行符。



文章来源: JavaScript: how to use a regular expression to remove blank lines from a string? [closed]