diff --git a/crates/oxc_regular_expression/src/ast_impl/support.rs b/crates/oxc_regular_expression/src/ast_impl/support.rs index 2f84d3117af44..a7290a8dd24c5 100644 --- a/crates/oxc_regular_expression/src/ast_impl/support.rs +++ b/crates/oxc_regular_expression/src/ast_impl/support.rs @@ -7,6 +7,7 @@ pub struct RegexUnsupportedPatterns { pub named_capture_groups: bool, pub unicode_property_escapes: bool, pub look_behind_assertions: bool, + pub pattern_modifiers: bool, } /// Check if the regular expression contains any unsupported syntax. @@ -62,7 +63,12 @@ fn term_contains_unsupported(term: &Term, unsupported: &RegexUnsupportedPatterns } disjunction_contains_unsupported(&group.body, unsupported) } - Term::IgnoreGroup(group) => disjunction_contains_unsupported(&group.body, unsupported), + Term::IgnoreGroup(group) => { + if group.modifiers.is_some() && unsupported.pattern_modifiers { + return true; + } + disjunction_contains_unsupported(&group.body, unsupported) + } _ => false, } } diff --git a/crates/oxc_transformer/src/regexp/mod.rs b/crates/oxc_transformer/src/regexp/mod.rs index da047186d0902..3d8875d44c8de 100644 --- a/crates/oxc_transformer/src/regexp/mod.rs +++ b/crates/oxc_transformer/src/regexp/mod.rs @@ -107,6 +107,7 @@ impl<'a, 'ctx> RegExp<'a, 'ctx> { look_behind_assertions, named_capture_groups, unicode_property_escapes, + pattern_modifiers: false, }, } }