正则表达式找到至少一个大写,只有字母的子串

时间:2016-10-03 14:39:53

标签: javascript regex

我必须找到一个字符串的所有子字符串,至少有一个大写字母,没有数字允许,只有[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"]

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

你可以使用一些暴力来检查一些正则表达式。

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; }

答案 1 :(得分:0)

试试这个:^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$

感谢。