Thread: Checking regex pattern validity

Checking regex pattern validity

From
David Garamond
Date:
Is there a function like IS_VALID_REGEX() to check whether a pattern is
valid (i.e. it compiles)? I'm storing a list of regex patterns in a
table. It would be nice to be able to add a CHECK constraint to ensure
that all the regexes are valid.

If there isn't any, can I suggest Postgres add one? Although I know this
can probably be done in plpgsql using exception handling, or done in
plperl or plruby.

--
dave


Re: Checking regex pattern validity

From
Tom Lane
Date:
David Garamond <lists@zara.6.isreserved.com> writes:
> Is there a function like IS_VALID_REGEX() to check whether a pattern is
> valid (i.e. it compiles)? I'm storing a list of regex patterns in a
> table. It would be nice to be able to add a CHECK constraint to ensure
> that all the regexes are valid.

    ... CHECK (('' ~ pattern) IS NOT NULL) ...

            regards, tom lane

Re: Checking regex pattern validity

From
David Garamond
Date:
Tom Lane wrote:
> David Garamond <lists@zara.6.isreserved.com> writes:
>
>>Is there a function like IS_VALID_REGEX() to check whether a pattern is
>>valid (i.e. it compiles)? I'm storing a list of regex patterns in a
>>table. It would be nice to be able to add a CHECK constraint to ensure
>>that all the regexes are valid.
>
>     ... CHECK (('' ~ pattern) IS NOT NULL) ...

Not exactly what I wanted, but close enough. Thanks!

However, what if only want to accept invalid regex patterns? Or what if
invalid pattern should be converted to NULL automatically? I'd still
vote for a function...

--
dave