首页 > 解决方案 > 如何在分隔特定字符的同时将字符串拆分为第 n 个字母字符间隔?

问题描述

如果我们有一个

string s = 'abcdxefyghijxlm'

我可以使用将其拆分为 2 个字符

s.match(/.{1,2}/g)

我会得到

['ab', 'cd', 'xe', 'fy', 'gh', 'ij', 'xl', 'm']

我将如何以这种方式拆分它,同时隔离特定字符'x''y'

对于上面的例子,我想得到以下结果

['ab', 'cd', 'x', 'ef', 'y', 'gh', 'ij', 'x', 'lm']

编辑

我忘了提到我只针对字母字符被分成对,除了xand y。所以目前,当我有类似的东西时,我上面的正则表达式实际上并不适用,s = '{"abcd":"12"}'因为它会导致

 ['{"', 'ab', 'cd', '":', '"1, '2"', '}']

代替

 [ '{', '"', 'ab', 'cd', '"', ':', '"', '1', '2', '"', '}']

标签: javascriptregex

解决方案


使用交替(this|that):/[a-wz]{2}|./g

寻找:

  • [a-wy]- 英文字母表中的任何两个字符,除了xand y, 或
  • .- 任何单个字符

交替选择匹配的第一个,因此这将优先[a-wz]{2}.两者匹配的位置。

例子:

现场示例:

let s = "abcdxefyghijxlm{\"abcd\":\"12\"}";

console.log(s.match(/[a-wz]{2}|./g));
.as-console-wrapper {
    max-height: 100% !important;
}

注意:以上内容区分大小写。如果您不希望这样,请添加i标志:/[a-wz]{2}|./gi


推荐阅读