---
name: "Perl::Critic::Policy::RegularExpressions::RequireExtendedFormatting"
section: "3pm"
platform: "linux"
package: "perl-perl-critic"
version: "1.156-3"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Perl::Critic::Policy::RegularExpressions::RequireExtendedFormatting"
---

# Perl::Critic::Policy::RegularExpressions::RequireExtendedFormatting(3pm)

Always use the "/x" modifier with regular expressions.

## NAME

Perl::Critic::Policy::RegularExpressions::RequireExtendedFormatting - Always use the "/x" modifier with regular expressions.

## AFFILIATION

This Policy is part of the core Perl::Critic distribution.

## DESCRIPTION

Extended regular expression formatting allows you mix whitespace and comments into the pattern, thus making them much more readable.

```
    # Match a single-quoted string efficiently...
    m{'[^\\']*(?:\\.[^\\']*)*'};  #Huh?
    # Same thing with extended format...
    m{
        '           # an opening single quote
        [^\\']      # any non-special chars (i.e. not backslash or single quote)
        (?:         # then all of...
            \\ .    #    any explicitly backslashed char
            [^\\']* #    followed by a non-special char
        )*          # ...repeated zero or more times
        '           # a closing single quote
    }x;
```

## CONFIGURATION

You might find that putting a `"/x"` on short regular expressions to be excessive.  An exception can be made for them by setting `"minimum_regex_length_to_complain_about"` to the minimum match length you'll allow without a `"/x"`.  The length only counts the regular expression, not the braces or operators.

```
    [RegularExpressions::RequireExtendedFormatting]
    minimum_regex_length_to_complain_about = 5
    $num =~ m<(\d+)>;              # ok, only 5 characters
    $num =~ m<\d\.(\d+)>;          # not ok, 9 characters
```

This option defaults to 0.

Because using `"/x"` on a regex which has whitespace in it can make it harder to read (you have to escape all that innocent whitespace), by default, you can have a regular expression that only contains whitespace and word characters without the modifier.  If you want to restrict this, turn on the `"strict"` option.

```
    [RegularExpressions::RequireExtendedFormatting]
    strict = 1
    $string =~ m/Basset hounds got long ears/;  # no longer ok
```

This option defaults to false.

## NOTES

For common regular expressions like e-mail addresses, phone numbers, dates, etc., have a look at the Regexp::Common module. Also, be cautions about slapping modifier flags onto existing regular expressions, as they can drastically alter their meaning.  See \<http://www.perlmonks.org/?node\_id=484238\> for an interesting discussion on the effects of blindly modifying regular expression flags.

## TO DO

Add an exemption for regular expressions that contain `"\Q"` at the front and don't use `"\E"` until the very end, if at all.

## AUTHOR

Jeffrey Ryan Thalhammer  \<jeff@imaginative-software.com\>

## COPYRIGHT

Copyright (c) 2005-2011 Imaginative Software Systems. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.  The full text of this license can be found in the LICENSE file included with this module.
