Thread: Regular expression problem
Hi... I'm dealing with a regular expression in a check constraint for many days.... i'm stuck with this... what I'm doing is adding a check to an existing table on a field called codigoex1 (varchar(9) ) check (codigoex1 ~* '[a-z]{2,2}') and I can't get it to work! I want to validate only input data such as "ar" "Us" "bR" and NOT something like "rum" "a" the previous reg. expr. only works like it were ~* '[a-z]{2}' , so, it ignores the maximum length. Tanks a lot!
Matias Surdi <matiass@interlap.com.ar> writes: > Hi... I'm dealing with a regular expression in a check constraint for many > days.... i'm stuck with this... > > what I'm doing is adding a check to an existing table on a field called > codigoex1 (varchar(9) ) > > check (codigoex1 ~* '[a-z]{2,2}') > > and I can't get it to work! > I want to validate only input data such as "ar" "Us" "bR" and NOT something > like "rum" "a" Use something like '^[a-z]{2}$' Regards, Manuel.
Matias Surdi <matiass@interlap.com.ar> writes: > Manuel Sugawara wrote: > >Use something like '^[a-z]{2}$' > > so, is this a bug???? No it is not. The sintax you are using is not supported. Regards, Manuel.
On 24 Oct 2003, Manuel Sugawara wrote: > Matias Surdi <matiass@interlap.com.ar> writes: > > > Manuel Sugawara wrote: > > >Use something like '^[a-z]{2}$' > > > > so, is this a bug???? > > No it is not. The sintax you are using is not supported. It certainly seems to work in Postgresql 7.4 beta 4: create table test2 (info text); CREATE TABLE insert into test2 values ('ab'); INSERT 109169538 1 insert into test2 values ('abc'); INSERT 109169539 1 marl8412=# select * from test2 where info ~ '^[a-z]{2}$';info ------ab Or was there more to that message I wasn't getting?
"scott.marlowe" <scott.marlowe@ihs.com> writes: > It certainly seems to work in Postgresql 7.4 beta 4: > > create table test2 (info text); > CREATE TABLE > insert into test2 values ('ab'); > INSERT 109169538 1 > insert into test2 values ('abc'); > INSERT 109169539 1 > > marl8412=# select * from test2 where info ~ '^[a-z]{2}$'; > info > ------ > ab > > Or was there more to that message I wasn't getting? He was trying to use '[a-z]{2,2}', which doesn't work in PostgreSQL. Regards, Manuel.
On 24 Oct 2003, Manuel Sugawara wrote: > "scott.marlowe" <scott.marlowe@ihs.com> writes: > > > It certainly seems to work in Postgresql 7.4 beta 4: > > > > create table test2 (info text); > > CREATE TABLE > > insert into test2 values ('ab'); > > INSERT 109169538 1 > > insert into test2 values ('abc'); > > INSERT 109169539 1 > > > > marl8412=# select * from test2 where info ~ '^[a-z]{2}$'; > > info > > ------ > > ab > > > > Or was there more to that message I wasn't getting? > > He was trying to use '[a-z]{2,2}', which doesn't work in PostgreSQL. Oh, ok. Thanks.
7.4 uses a completely new regex engine, so comparisons with that will not be valid anyway. Pre-7.4 regex behaviour is all documented: Users Guide -> Functions & Operators -> Pattern Matching --- "scott.marlowe" <scott.marlowe@ihs.com> wrote: > On 24 Oct 2003, Manuel Sugawara wrote: > > > Matias Surdi <matiass@interlap.com.ar> writes: > > > > > Manuel Sugawara wrote: > > > >Use something like '^[a-z]{2}$' > > > > > > so, is this a bug???? > > > > No it is not. The sintax you are using is not > supported. > > It certainly seems to work in Postgresql 7.4 beta 4: > > create table test2 (info text); > CREATE TABLE > insert into test2 values ('ab'); > INSERT 109169538 1 > insert into test2 values ('abc'); > INSERT 109169539 1 > > marl8412=# select * from test2 where info ~ > '^[a-z]{2}$'; > info > ------ > ab > > Or was there more to that message I wasn't getting? > > > ---------------------------(end of > broadcast)--------------------------- > TIP 2: you can get off all lists at once with the > unregister command > (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) __________________________________ Do you Yahoo!? The New Yahoo! Shopping - with improved product search http://shopping.yahoo.com