On the computational complexity of JavaScript regex matching
This clarifies the complexity class for widely used JavaScript regex, addressing a gap in theoretical understanding for developers and researchers.
The paper tackled the computational complexity of JavaScript regular expression matching, proving that it is PSPACE-hard and OptP-hard, and establishing PSPACE-completeness and OptP-completeness for specific subsets without certain features.
Despite widespread use, the complexity class of modern regular expression matching was not well-understood. Previous work proved that regular expression matching with backreferences and lookarounds was PSPACE-complete, but the proof was not mechanized and applied to an abstract regex language. This paper clarifies the question for JavaScript regular expressions. In this paper, we prove the following new results, with most core proofs mechanized in the Rocq proof assistant. We prove that JavaScript regex matching is indeed PSPACE-hard, even without negative lookarounds, and OptP-hard as well; that JavaScript regex matching without lower-bounded quantifiers (i.e. quantifiers with a non-zero minimum number of repetitions) is PSPACE-complete; and that JavaScript regex matching without lower-bounded quantifiers and without lookarounds is OptP-complete.