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

假设我有一个字符串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"]


拉丁的传说
浏览 194回答 2
2回答

holdtom

正则表达式/[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))

哔哔one

使用这个正则表达式: ^[a-z]+|((?![A-Z][a-z])[A-Z])+|[A-Z][a-z]+在https://regex101.com/r/5r8MzJ/1 上查看它的实际应用解释。我们将捕获三种替代模式。^[a-z]+仅在字符串的开头接受一系列小写字母。((?![A-Z][a-z])[A-Z])+如果后跟小写字母,则接受除最后一个以外的一系列大写字母[A-Z][a-z]+接受一系列一个大写字母和至少一个小写字母。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript