Узнайте позицию, где регулярное выражение не удалось

Я пытаюсь написать лексер в JavaScript для поиска токенов простого предметно-ориентированного языка. Я начал с простой реализации, которая просто пытается сопоставить последующие регулярные выражения с текущей позицией в строке, чтобы выяснить, соответствует ли она некоторому формату токена, и принять его тогда.

Проблема в том, что когда что-то не совпадает внутри такого регулярного выражения, все регулярное выражение терпит неудачу, поэтому я не знаю, какой именно символ вызвал его неудачу.

Есть ли способ узнать позицию в строке, которая вызвала сбой регулярного выражения?

INB4: я не спрашиваю об отладке моего регулярного выражения и проверке его правильности. Это уже правильно, совпадает с правильными строками и сбрасывает неправильные. Я просто хочу программно узнать, где именно регулярное выражение перестало совпадать, чтобы узнать положение символа, который был неправильным при вводе пользователем, и сколько из них было в порядке.

Есть ли способ сделать это с помощью простых регулярных выражений, вместо того, чтобы реализовывать полноценный конечный автомат?

Ответы на вопрос(3)

Ваш ответ на вопрос