JavaScript RegExp `d` Modifier

2 min read .

The d modifier, also known as the “duplicate capturing group names” modifier, is a recent addition to the JavaScript regular expression (RegExp) syntax. It provides a way to capture multiple groups with the same name, making your code more readable and flexible when working with patterns that repeat.

What is the d Modifier in JavaScript RegExp?

The d modifier enables named capturing groups to record the positions of duplicated captures. When applied, the d modifier keeps track of every match for a named group, rather than just the last occurrence.

Key Features:

  • Enhanced Pattern Matching: Allows capturing multiple occurrences of the same named group.
  • Improved Readability: Makes the regular expressions more readable, especially in complex matching scenarios.
  • Better Debugging: Simplifies the process of debugging and analyzing patterns by keeping track of all matches.

How to Use the d Modifier

To use the d modifier in JavaScript, you can add it at the end of your regular expression pattern, just like other modifiers (g, i, m, etc.).

Syntax:

const regex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/d;

Explanation:

  • (?<name>pattern): Defines a named capturing group, where name is the group name.
  • d: Captures all occurrences of the named groups.

Examples of Using the d Modifier

  1. Capturing Multiple Occurrences of the Same Named Group

Suppose you have a date string with multiple dates, and you want to capture all dates separately:

const dateRegex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/d;
const dates = '2024-08-30 and 2023-12-25';
const match = dates.match(dateRegex);

console.log(match.groups); 
// Output: { year: ['2024', '2023'], month: ['08', '12'], day: ['30', '25'] }
  1. Using the d Modifier for Debugging

You can use the d modifier to capture detailed data and help debug complex regular expressions:

const text = 'Product A: $10, Product B: $20, Product C: $30';
const priceRegex = /(?<product>\w+): \$?(?<price>\d+)/d;

const matches = text.match(priceRegex);

console.log(matches.groups); 
// Output: { "product": "A", "price": "10" }

When to Use the d Modifier?

  • Multiple Captures: When you need to capture multiple groups with the same name.
  • Detailed Analysis: For debugging or analyzing complex regular expression patterns.
  • Improved Readability: When you want to maintain readability in complex regex scenarios.

Browser Compatibility

The d modifier is part of the ECMAScript 2022 specification and may not be supported in older browsers. It is fully supported in most modern browsers, including Chrome (version 93+), Firefox (version 103+), and Edge (version 93+).

Conclusion

The JavaScript RegExp d modifier offers enhanced flexibility and readability when working with patterns that involve repeated captures. By capturing all instances of named groups, it provides developers with better control over regex patterns, making debugging and pattern matching more efficient.

See Also

chevron-up