当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在正则表达式拆分期间发生javascript未定义元素》经验,为你挑选了1个好方法。

以下代码导致中间的未定义元素

"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"]

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



1> Casimir et H..:

这是因为当您在拆分模式中使用捕获组时,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*/

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有