假设我有一个字符串testTESTCheckTESTAnother
,我想用几个词来分割它,比如那个["test", "TEST", "Check", "TEST", "Another"]
。
输入:
只允许A字符
testTESTCheckTESTAnother
代码:
我对regex最好的尝试是:
"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"]
发布于 2019-11-21 06:32:26
使用以下正则表达式:^[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]+
接受一系列大写字母和至少一个小写字母。
发布于 2019-11-21 06:32:13
Regex
/[a-z]+|[A-Z]+(?=[A-Z]|$)|([A-Z][a-z]+)/g
[a-z]+
- Lowercase
[A-Z]+(?=[A-Z]|$)
-大写
([A-Z][a-z]+)
- TitleCase
let string = "testTESTCheckTESTAnother"
console.log(string.match(/[a-z]+|[A-Z]+(?=[A-Z]|$)|([A-Z][a-z]+)/g))
https://stackoverflow.com/questions/58976460
复制