在正则表达式拆分期间发生javascript未定义元素

以下代码导致中间的未定义元素
"Hello World\n\nhello world".split(/\n(\n|\t|\s)*?\n/)
"Hello World\n\nhello world".split(/\n(\n|\t|\s)*\n/)

输出

["Hello World",undefined,"hello world"]

我想分割,如果有两个新的行字符,它们之间有任意数量的新行,空格或制表符,只要它们不是字母或符号或数字.

这是因为当您在拆分模式中使用捕获组时,javascript会在结果中包含捕获组的内容.因为,捕获组不能为空,它永远不会重复,这就是为什么你得到“未定义”而不是空字符串的原因.

要防止这种情况,请使用非捕获组或字符类:

"Hello World\n\nhello world".split(/\n(?:\n|\t|\s)*\n/)
"Hello World\n\nhello world".split(/\n\s*\n/) # (\t and \n are already included in \s)

注意:如果您也想删除前导和尾随空格,可以使用:

/(?:[^\S\n]*\n){2}\s*/

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...