我必须找到一个字符串的所有子串,至少有一个大写字母,不允许数字,只有[a-zA-Z],不存在空格。
然后,如果我有一个类似 "s=aAb0sDa"
的字符串,则 s.match(regex)
匹配必须返回:["A",“aA”,“Ab”,“aAb”,“sD”,“Da”,“sDa”,“D”]
。
我唯一尝试的是 s.match(/[a-z]*[A-Z]+[a-z]*/g)
,但它只返回 ["aAb", "sDa"]
有什么想法吗?
最佳答案
您可以使用一些正则表达式进行强力检查。
function getParts(string) {
var result = [];
string.split(/[^a-z]/i).forEach(function (a) {
var i, j, match;
for (i = 0; i < a.length; i++) {
for (j = i + 1; j < a.length + 1; j++) {
match = a.slice(i, j).match(/[a-z]*[A-Z]+[a-z]*/);
match && result.push(match[0]);
}
}
});
return result;
}
console.log(getParts('aAb0sDa1aaBCaa'));
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 正则表达式查找至少包含一个大写字母的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39834245/