javascript - 如何将这个字符串拆分成一个数组

标签 javascript regex string

如果我有一个像下面这样的字符串并且它不是每次都是静态的。

 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) 

http://jsfiddle.net/fhDPj/1/

并解释正则表达式

  • #([^_]*)_ - 查找 _ 之外的任何落在 # 之间的东西>_(* 表示即使是空字符串也被捕获)
  • ([^#_\s])+ - 查找不是 #_ 或空格 ( + 表示只捕获非空字符串)
  • (?: | ) - 找到上面的任何一个(但不是捕获,因为上面的表达式已经捕获了所需的字符串)
  • //g - 全局匹配,返回字符串中的所有匹配项,而不仅仅是第一个

关于javascript - 如何将这个字符串拆分成一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9325223/

相关文章:

javascript - ES6 类中的箭头与经典方法

javascript - 需要替换变量值格式的正则表达式模式

ios - 如何转义正则表达式字符串

Python:用txt文件中的 float 替换字符串

c++ - 读取文本文件并将标记放入二维矩阵的问题

javascript - 使用javascript裁剪图片

javascript - jquery 排除数组元素

java - 是否可以使用 GWT 构建像独立小部件(如 slider 或日期选择器等)一样的 jquery?

python - 替换与模式匹配的部分字符串

c# - C#从字符串中提取十进制数