如果我有一个像下面这样的字符串并且它不是每次都是静态的。
var str = "#a
b
c
_
ele1
ele2
#d
e
f
_
ele3
";
我想从上面的字符串中检索如下所示的数组
arr = [ "#a
b
c
_",
"ele1",
"ele2",
"#d
e
f
_",
"ele3"
]
标准是:# 和 _ 之间的所有内容作为单个项目;这些分隔符之外的每一行都是一个单独的项目。
我该怎么做。有什么想法....请使用this fiddle 。
最佳答案
同样,考虑到评论中的标准,这是可行的
var arr = str.match(/(?:#([^_]*)_|([^#_\s])+)/g)
并解释正则表达式
#([^_]*)_
- 查找_
之外的任何落在#
和之间的东西>_
(*
表示即使是空字符串也被捕获)([^#_\s])+
- 查找不是#
、_
或空格 (+
表示只捕获非空字符串)(?: | )
- 找到上面的任何一个(但不是捕获,因为上面的表达式已经捕获了所需的字符串)//g
- 全局匹配,返回字符串中的所有匹配项,而不仅仅是第一个
关于javascript - 如何将这个字符串拆分成一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9325223/