【问题标题】:How to split a string into arrays of different character using regex [duplicate]如何使用正则表达式将字符串拆分为不同字符的数组[重复]
【发布时间】:2020-10-06 04:13:27
【问题描述】:

如何在 JS 中使用正则表达式将字符串拆分为不同的字符

例如,

'aabbcdddaa'

会变成

[aa, bb, c, dd, aa]

感谢任何帮助,谢谢!

【问题讨论】:

    标签: javascript regex split


    【解决方案1】:

    捕获一个字符和反向引用。

    console.log('aabbcdddaa'.match(/(.)\1*/g));

    【讨论】:

    • 我可以知道'\1'是什么意思吗?
    • 这是一个反向引用。匹配捕获的相同字符
    • 我明白了,谢谢伙计!
    【解决方案2】:

    如果你坚持使用split,它会有点复杂,并且只适用于较新的 JavaScript 引擎(因为它必须依赖lookbehind):

    console.log('aabbcdddaa'.split(/(?<=(.))(?!\1)/g).filter((e, i) => i % 2 == 0));

    这会在lookbehind 中捕获一个字符,然后确保lookahead 字符不同,从而识别字符串中两个相邻字符不同的位置。但是,在split 中使用捕获会将捕获插入到结果列表中,因此我们需要通过仅保留偶数结果来过滤掉不需要的“分隔符”。

    注意:这从字面上回答了发布的问题;实际上,使用 Snow 发布的全局 match 可读性更高,性能也更高(更不用说它也适用于旧引擎)。

    【讨论】:

    • 我对匹配方法没问题。不过感谢您的解决方案!
    猜你喜欢
    • 2018-06-16
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 2016-12-03
    相关资源
    最近更新 更多