【问题标题】:Split a string via double occurances and single occurances of the number 1通过数字 1 的两次出现和一次出现来拆分字符串
【发布时间】:2018-09-25 11:36:42
【问题描述】:

如果字符 1 出现两次或一次,我正在尝试拆分字符串。另外,我只使用 1s 和 2s。此外,顺序必须取决于以下示例:

var str = "111221";

我想要 strArr=["1","11", "2" ,"2", "1"];

str.match(/1{2}|2|1{1}/g) 将返回 [ '11', '1', '2', '2', '1' ]。但是,这不是正确的顺序。即)5 1s '11111' -> ['1','11','11'] 和 6 1s '111111' -> ['11','11','11']

【问题讨论】:

  • 你想要1 然后11 ?你为什么不想要11 然后1 ?也许你不知道自己想要什么。
  • 我想要这个排序的 1 然后 11 这样我就可以通过一个对象来映射它,该对象将按顺序返回它
  • 那么'111111'应该变成['11', '11', '11]['11, '1', '11', '1']['1', '1', '1', '11', '1'],还是...?
  • 或者,那些东西是怎么回事?
  • @ScottSauyet ['11','11','11'] 即)五个 1 将给出 '11111' -> ['1','11','11']

标签: javascript node.js regex string frontend


【解决方案1】:

想出了这个。

(?:1(?=(?:11)*(?!1))|11|2)

它基本上只是得到第一个奇数 1,然后得到偶数。

https://regex101.com/r/UtbhsV/1

解释

 (?:
      1                   # First, try 1
      (?=                 # Must be followed by even amount of 1's
           (?: 11 )*
           (?! 1 )
      )
   |  11                  # Or, only even's left, just get 11
   |  2                   # Or, How about a  2 ?
 )

【讨论】:

  • 你能用它把"111221"转换成["1","11", "2" ,"2", "1"]吗?
  • @ScottSauyet - 当然可以。(?:1(?:(?=(?:11)*(?!1)))|11|2) regex101.com/r/TkHOWP/1
  • 非常好!我在没有正则表达式的情况下这样做,结果变得丑陋!
猜你喜欢
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 2021-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多