non-raw-regex-pattern
Summary: Use raw strings for regex patterns
Category: Idiomatic
Automatically fixable: Yes
Avoid
all_digits if {
regex.match("[\\d]+", "12345")
}
Prefer
all_digits if {
regex.match(`[\d]+`, "12345")
}
Rationale​
Raw strings are interpreted literally, allowing
you to avoid having to escape special characters like \ in your regex patterns. Using raw strings for regex patterns
additionally makes them easier to identify as such.
Limitations​
This rule currently only scans regex string literals in the place of the pattern argument of the various
regex built-in functions. It will not not
try to "resolve" patterns assigned to variables. The following example would as such not render a warning:
package policy
# Pattern assigned to variable
pattern := "[\\d]+"
# This won't trigger a violation
allow if regex.match(pattern, "12345")
Configuration Options​
This linter rule provides the following configuration options:
rules:
idiomatic:
non-raw-regex-pattern:
# one of "error", "warning", "ignore"
level: error
Related Resources​
- Rego Style Guide: Use raw strings for regex patterns
- OPA Docs: Regex Functions Reference
- GitHub: Source Code