为了账号安全,请及时绑定邮箱和手机立即绑定

在单个单词中匹配 UPPERCASE、PascalCase 和 camelCase

在单个单词中匹配 UPPERCASE、PascalCase 和 camelCase

拉丁的传说 2022-01-07 11:07:56
假设我有一个字符串testTESTCheckTESTAnother,我想用几句话将它拆分,就像那样["test", "TEST", "Check", "TEST", "Another"]。输入:只允许使用 [A-Za-z] 字符testTESTCheckTESTAnother代码:我对正则表达式的最佳尝试是:"testTESTCheckTESTAnother".match(/^[a-z]+|[A-Z][a-z]*/g)Output: ["test", "T", "E", "S", "T", "Check", "T", "E", "S", "T", "Another"]我尝试了负前瞻,但它也不起作用:"testTESTCheckTESTAnother".match(/?![A-Z][a-z]+)[A-Z]+/g)Output: ["TESTC", "TESTA"]期望的输出:["test", "TEST", "Check", "TEST", "Another"]其他输入输出:input: "ITest"output: ["I", "Test"]input: "WHOLETESTWORD"output: ["WHOLETESTWORD"]input: "C"output: ["C"]
查看完整描述

2 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

正则表达式

/[a-z]+|[A-Z]+(?=[A-Z]|$)|([A-Z][a-z]+)/g

演示

[a-z]+-小写

[A-Z]+(?=[A-Z]|$)-大写

([A-Z][a-z]+)-标题案例


let string = "testTESTCheckTESTAnother"  
console.log(string.match(/[a-z]+|[A-Z]+(?=[A-Z]|$)|([A-Z][a-z]+)/g))


查看完整回答
反对 回复 2022-01-07
?
哔哔one

TA贡献1854条经验 获得超8个赞

使用这个正则表达式: ^[a-z]+|((?![A-Z][a-z])[A-Z])+|[A-Z][a-z]+

https://regex101.com/r/5r8MzJ/1 上查看它的实际应用

解释。我们将捕获三种替代模式。

  1. ^[a-z]+

仅在字符串的开头接受一系列小写字母。

  1. ((?![A-Z][a-z])[A-Z])+

如果后跟小写字母,则接受除最后一个以外的一系列大写字母

  1. [A-Z][a-z]+

接受一系列一个大写字母和至少一个小写字母。


查看完整回答
反对 回复 2022-01-07
  • 2 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号