diff --git a/Tests/LibRegex/Regex.cpp b/Tests/LibRegex/Regex.cpp index 6b8f5f559c..2b11be4d37 100644 --- a/Tests/LibRegex/Regex.cpp +++ b/Tests/LibRegex/Regex.cpp @@ -599,6 +599,7 @@ TEST_CASE(ECMA262_parse) { "(?<$$_$$>a)"sv }, { "(?<ΓΏ>a)"sv }, { "(?<𝓑𝓻𝓸𝔀𝓷>a)"sv }, + { "((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})"sv, regex::Error::NoError, ECMAScriptFlags::BrowserExtended } // #12373, quantifiable assertions. }; for (auto& test : tests) { diff --git a/Userland/Libraries/LibRegex/RegexParser.cpp b/Userland/Libraries/LibRegex/RegexParser.cpp index 564f57e612..60d960a655 100644 --- a/Userland/Libraries/LibRegex/RegexParser.cpp +++ b/Userland/Libraries/LibRegex/RegexParser.cpp @@ -1083,6 +1083,9 @@ bool ECMA262Parser::parse_assertion(ByteCode& stack, [[maybe_unused]] size_t& ma if (m_should_use_browser_extended_grammar) { if (!unicode) { if (parse_quantifiable_assertion(assertion_stack, match_length_minimum, named)) { + if (!parse_quantifier(assertion_stack, match_length_minimum, unicode, named)) + return false; + stack.extend(move(assertion_stack)); return true; }