我需要使用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!
你的模式似乎好了,你只需要包含多修饰符m
,使^
和$
匹配行的开头和结尾,以及:
/^\s*\n/gm
如果没有m
,锚只匹配字符串的开头和结尾。
请注意,您在Mac行尾(只错过了\r
)。 这将有助于在这种情况下:
/^\s*[\r\n]/gm
还要注意的是(在这两种情况下),你不需要匹配可选\r
在前面\n
明确,因为这是采取由护理\s*
。
由于地塞米松在评论中指出,这将无法清除的最后一行,如果它仅由空间(并没有换行后话)。 要解决这个问题的一种方法是使实际的换行符可选的,但之前包括结束线的锚。 在这种情况下, 你必须匹配行虽然结束正确:
/^\s*$(?:\r\n?|\n)/gm
我相信这会工作
searchText.replace(/(^[ \t]*\n)/gm, "")
这应该做的伎俩,我认为:
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]