我需要使用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
非常感谢比特纳先生!
5条答案
按热度按时间ntjbwcob1#
您的模式看起来不错,您只需要包括多行修饰符
m
,以便^
和$
也匹配行的开始和结束:如果没有
m
,锚只匹配字符串的开始和结束。注意,您错过了UNIX风格的行尾(只有
\r
)。还要注意(在这两种情况下),您不需要显式地匹配
\n
前面的可选\r
,因为这由\s*
处理。正如Dex在注解中指出的,如果最后一行只包含空格(并且后面没有换行符),那么这将无法清除最后一行。解决这个问题的一个方法是使实际的换行符可选,但在它之前包含一个行尾锚。在这种情况下,您 * 必须 * 正确匹配行尾:
gorkyyrv2#
我相信这会成功的
lyr7nygr3#
我想这应该可以了:
**EDIT:**删除三种类型的换行符。
50pmv0ei4#
下面是another solution:
它似乎可以处理空行和只有空格的行。
yqkkidmi5#
试验: