cur*_*us1 46 javascript regex blank-line
我需要使用JavaScript删除HTML文本框中的空行.空行可以位于textarea元素中的任何位置.空行可以只是返回或空格加返回.
我期待一个正则表达式的解决方案.这是我尝试过的一些,但它们不起作用,无法弄清楚原因:
/^\s*\r?\n/g
/^\s*\r?\n$/g
Run Code Online (Sandbox Code Playgroud)
编辑1
似乎aaronman和m.buettner建议的解决方案(我稍微修改了一下)有效:
string.replace(/^\s*\n/gm, "")
Run Code Online (Sandbox Code Playgroud)
有人能说出为什么我的第一个正则表达式无效吗?
编辑2
在阅读了所有有用的答案之后,我想出了这个:
/^[\s\t]*(\r\n|\n|\r)/gm
Run Code Online (Sandbox Code Playgroud)
这是否会涵盖所有情况?
编辑3
这是最简洁的一个,涵盖所有空间(空白,制表符)和平台(Linux,Windows,Mac).
/^\s*[\r\n]/gm
Run Code Online (Sandbox Code Playgroud)
非常感谢m.buettner!
Mar*_*der 70
你的模式似乎好了,你只需要包括多修改m,使^和$匹配行的开头和结尾,以及:
/^\s*\n/gm
Run Code Online (Sandbox Code Playgroud)
如果没有m,锚点只匹配字符串开头和结尾.
请注意,您错过了Mac行结尾(仅限\r).在这种情况下,这将有所帮助:
/^\s*[\r\n]/gm
Run Code Online (Sandbox Code Playgroud)
另请注意(在两种情况下)您都不需要明确地匹配\r前面的可选项\n,因为这是由处理\s*.
正如Dex在评论中指出的那样,如果它只包含空格(并且后面没有换行符),则无法清除最后一行.解决这个问题的方法是使实际的换行符可选,但在它之前包含一个行尾锚点.在这种情况下,你就必须匹配行虽然结束正确:
/^\s*$(?:\r\n?|\n)/gm
Run Code Online (Sandbox Code Playgroud)
aar*_*man 18
我相信这会奏效
searchText.replace(/(^[ \t]*\n)/gm, "")
Run Code Online (Sandbox Code Playgroud)
这应该是我认为的伎俩:
var el = document.getElementsByName("nameOfTextBox")[0];
el.value.replace(/(\r\n|\n|\r)/gm, "");
Run Code Online (Sandbox Code Playgroud)
编辑:删除三种类型的换行符.
这是一个可重用的函数,它将修剪每行的空白并删除任何空白或仅包含空格的行:
function trim_and_remove_blank_lines(string)
{
return string.replace(/^(?=\n)$|^\s*|\s*$|\n\n+/gm, "")
}
Run Code Online (Sandbox Code Playgroud)
使用示例:
trim_and_remove_blank_lines("Line 1 \nLine2\r\n\r\nLine4\n")
//Returns 'Line 1\nLine2\nLine4'
Run Code Online (Sandbox Code Playgroud)