The zsh/regex module makes available the following test condition:
-regex-match regexMatches a string against a POSIX extended regular expression.
On successful match,
matched portion of the string will normally be placed in the MATCH
variable. If there are any capturing parentheses within the regex, then
the match array variable will contain those.
If the match is not successful, then the variables will not be altered.
For example,
[[ alphabetical -regex-match ^a([^a]+)a([^a]+)a ]] && print -l $MATCH X $match
If the option REMATCH_PCRE is not set, then the =~ operator will
automatically load this module as needed and will invoke the
-regex-match operator.
If BASH_REMATCH is set, then the array BASH_REMATCH will be set
instead of MATCH and match.
Note that the zsh/regex module logic relies on the host system. The
same expr and regex pair could produce different results on different
platforms if a regex with non-standard syntax is given.
For example, no syntax for matching a word boundary is defined in the POSIX
extended regular expression standard. GNU libc and BSD libc both provide
such syntaxes as extensions (\b and [[:<:]]/[[:>:]] respectively),
but neither of these syntaxes is supported by both of these implementations.
Refer to the regcomp(3) and re_format(7) manual pages on your system for locally-supported syntax.