You should grouping first 7 digits to keep "([0-9]{7})" and replace last 4 digits \d{4}: postgres@postgres=# select regexp_replace('18910180000,13910180000,232,abc','([0-9]{7})\d{4}',E'\\1****','g') ; regexp_replace --------------------------------- 1891018****,1391018****,232,abc (1 row) Time: 73,528 ms postgres@postgres=# 05.08.2016 13:35, sunpeng пишет: > hi, friends, > Our phone number format is 11 digital, i want to replace last 4 > digital into star, for example: > Replace this string including 11 digital phone number: > '18910180000,13910180000,232,abc' > into: > '1891018****,1391018****,232,abc' > I try to use: > select > regexp_replace('18910180000,13910180000,232,abc','[0-9]{7}(\d+)','****','g') > But it doesn't work, it will return: > "****,****,232,abc" > Can anyone help me? Thanks a million! > > Best Regards > peng -- WBR, Michail Shurutov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general