regex - 用多个大写字母分割文本
问题描述
我正在尝试拆分这些文本,因为我知道一个单词至少有两个字母。
SAMAndMAX // SAM And MAX
SAMAndMax // SAM And Max
SamAndMax // Sam And Max
SamAndMAX // Sam And MAX
我试过这样做(?=[A-Z][a-z])
,但你看不到它不能正常工作。
console.log('SAMAndMAX'.split(/(?=[A-Z][a-z])/).join(' '))
console.log('SAMAndMax'.split(/(?=[A-Z][a-z])/).join(' '))
console.log('SamAndMax'.split(/(?=[A-Z][a-z])/).join(' '))
console.log('SamAndMAX'.split(/(?=[A-Z][a-z])/).join(' '))
我似乎无法弄清楚......知道我做错了什么吗?
解决方案
示例数据的一个选项是使用具有正向后视的交替 |
来断言 char az 和正向前瞻来断言 char AZ
请参阅此链接https://caniuse.com/#feat=js-regexp-lookbehind了解lookbehinds 的可用性。
(?=[A-Z][a-z])|(?<=[a-z])(?=[A-Z])
console.log('SAMAndMAX'.split(/(?=[A-Z][a-z])|(?<=[a-z])(?=[A-Z])/).join(' '));
console.log('SAMAndMax'.split(/(?=[A-Z][a-z])|(?<=[a-z])(?=[A-Z])/).join(' '));
console.log('SamAndMax'.split(/(?=[A-Z][a-z])|(?<=[a-z])(?=[A-Z])/).join(' '));
console.log('SamAndMAX'.split(/(?=[A-Z][a-z])|(?<=[a-z])(?=[A-Z])/).join(' '));
推荐阅读
- css - 清晰设计表组件粘性标题
- git - Github 工作流自动化
- r - R中的快速地理空间采样
- javascript - 加载模块脚本失败:服务器以非 JavaScript MIME 类型“”响应
- javascript - 通过 JavaScript 的 POST 方法不是从 API 检索数据,而是在 Postman 中检索数据
- android - 将图片上传到 Firebase 存储会自动删除之前上传的图片
- java - Android 登录和注册 PHP MySQL 和 SQLite FAIL
- java - 我正在尝试在 webView 中暂停和播放视频,但它不起作用
- asp.net - 将 .NET Framework 4.x 项目迁移到 .NET Core 3.1
- mysql - mysql FIND_IN_SET 连接中的多个列