我想开发一个具有以下功能的正则表达式:
每个“A”后跟一个“B”,我想到的就是我们可以拥有(A [C-Z] * B)+
B不需要在A之后立即出现。话虽如此,ACCB也没关系。
接受的字符串: AABB
AXXBAXXB
AXXXXBXXAXXB
ABABABABAB
不接受:
AAAAB
AABBBB
BBBBAAAA
AXXXBBBAAA
我感谢任何帮助。
答案 0 :(得分:0)
我知道OP说它必须是一个正则表达式,但我同意@tbodt上面的评论。这将完成OP在没有正则表达式的情况下所要求的内容,并且在这里发布给任何试图解决类似问题的人,并且可以使用不同类型的解决方案。
function everyAHasMatchingB(str) {
return Array.from(str)
.filter(c => c === 'A' || c === 'B')
.reduce((count, aOrB) => {
return aOrB === 'A' ? count + 1 :
count <= 0 ? NaN // Mismatched B. NaN ensures the function returns false.
: count - 1
}, 0) === 0;
}