以下代码导致中间的未定义元素
"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*/
原文地址:https://www.jb51.cc/regex/356821.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。