Descubra a posição em que uma expressão regular falhou

Estou tentando escrever um lexer em JavaScript para encontrar tokens de uma linguagem específica de domínio simples. Comecei com uma implementação simples que apenas tenta corresponder os regexps subsequentes da posição atual em uma linha para descobrir se ele corresponde a algum formato de token e aceitá-lo.

O problema é que, quando algo não corresponde a esse regexp, todo o regexp falha, então não sei qual caractere exatamente causou a falha.

Existe alguma maneira de descobrir a posição na string que causou a falha da expressão regular?

INB4: Eu não estou perguntando sobre depurar meu regexp e verificar sua correção. Já está correto, corresponde às seqüências corretas e descarta as incorretas. Eu só quero saber programaticamente onde exatamente o regexp parou de corresponder, para descobrir a posição de um caractere que estava incorreto na entrada do usuário e quantos deles estavam corretos.

Existe alguma maneira de fazer isso apenas com regexps simples, em vez de implementar um autômato de estado finito completo?

questionAnswers(3)

yourAnswerToTheQuestion