Thread: Checking regex pattern validity
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
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
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