javascript - 如何在分隔特定字符的同时将字符串拆分为第 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']
编辑
我忘了提到我只针对字母字符被分成对,除了x
and y
。所以目前,当我有类似的东西时,我上面的正则表达式实际上并不适用,s = '{"abcd":"12"}'
因为它会导致
['{"', 'ab', 'cd', '":', '"1, '2"', '}']
代替
[ '{', '"', 'ab', 'cd', '"', ':', '"', '1', '2', '"', '}']
解决方案
使用交替(this|that
):/[a-wz]{2}|./g
寻找:
[a-wy]
- 英文字母表中的任何两个字符,除了x
andy
, 或.
- 任何单个字符
交替选择匹配的第一个,因此这将优先[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
推荐阅读
- c++ - 标识符“in”未定义
- druid - 当 apache druid 已经有更多 1M 段时插入新段
- python - 如何从 Google Colaboratory 将数据框复制到剪贴板(或解决方法)?
- go - 使用 Fprintf 时发送的字节数差异
- odoo - Odoo 12 如何使用render_qweb_html?
- javascript - 如何通过隐藏的输入字段将 javascript 会话传递给数据库?
- django - Nginx:将子域重新路由到 Django
- php - 如何在 laravel eloquent WITH & DISTINCT 或 GROUPBY 中检索数据?
- ios - 如何在 iphone 的共享菜单中列出我的 ionic 应用程序?
- php - 控制台中的数据响应返回 HTML 代码