Thread: BUG #2127: Regular Expression Limits Do Not Work

BUG #2127: Regular Expression Limits Do Not Work

From
"Kyril Alyoshin"
Date:
The following bug has been logged online:

Bug reference:      2127
Logged by:          Kyril Alyoshin
Email address:      kyrill@technolog.ca
PostgreSQL version: 8.0.3
Operating system:   Windows XP
Description:        Regular Expression Limits Do Not Work
Details:

I am writing a regex to verify US zipcodes. The expression is very simple,
in a trigger function it looks like this:

IF (NEW.postal_code_name !~ '\\d{5}')
THEN
    RAISE EXCEPTION 'error';
END IF;

The bug description is:

If postal_code_name is > 5 digits, the expression would still evaluate to
false, and the error will not be raised.

Please correct this.

Thank you.

Kyrill

Re: BUG #2127: Regular Expression Limits Do Not Work

From
Tom Lane
Date:
"Kyril Alyoshin" <kyrill@technolog.ca> writes:
> IF (NEW.postal_code_name !~ '\\d{5}')

> The bug description is:
> If postal_code_name is > 5 digits, the expression would still evaluate to
> false, and the error will not be raised.

> Please correct this.

Please learn how to use regular expressions ;-)

You probably want '^\\d{5}$' instead, to require the regex to match the
whole string instead of just any part of it.

            regards, tom lane