UPD: Вопрос решен. Всем спасибо!

Здравствуйте! Подскажите, пожалуйста, что я делаю неправильно? Не понимаю, как правильно записать регулярное выражение при создании доменов в PostgreSQL , чтоб можно было ввести данные.

У меня в базе данных есть таблица Employees, которая хранит информацию о работниках. Есть поля Telephone и Email.
Нужно для них создать домены.

Запись телефона должна выглядеть так: +123 45678910, т.е. первый должен быть плюс, потом три цифры, один пробел, и дальше любое количество цифр, но чтоб полное количество всех символов не превышало 17.



При создании домена ни на что не ругается, а вот когда начинаю вводить данные, выводит ошибку, что либо неправильный диапазон значений, либо данные не соответствуют. С моей стороны, вероятно накосячено с пробелом, не знаю, как решить проблему.

Та же самая проблема с эл.почтой.



@темы: Вопрос, База данных, MS SQL

Комментарии
12.01.2013 в 22:03

тролль - это не только ценный жир, но и 3-4 легкоусвояемых коммента ежедневно
а разве перед символами точка и минус не надо ставить обратный слеш, чтобы они интерпретировались как обычные символы?
12.01.2013 в 22:51

И тесно облакам.
1. Вы пишете char(17), а это значит, что символов должно быть ровно 17. Надо написать там просто varchar, а проверять длину можно регекспом (см. код).
2. [+] - это экранирование такое? Лучше \+.
3. Писать {1} нет особого смысла. Повторение конструкции один раз? Но зачем? Его можно опустить.
4. Вместо [0-9] лучше писать \d.

Вот такое вроде работает (по крайней мере, на sqlfiddle.com):



Я не очень понял, что там с экранированием слешей. По идее, чтобы слеш попал в регулярку, его надо написать два раза. Но у меня работает только так, как я написал.
12.01.2013 в 23:34

Ri, Я полностью написала весь ваш код, но ничего не изменилось. Т.е. по-прежнему ошибка: "Invalid regular expression: quantifier operand invalid."

CD_Eater, По поводу слешей, как я поняла, надо написать так:

Но по данной записи тоже ничего не вышло.
12.01.2013 в 23:48

И тесно облакам.
Как же ничего не изменилось? У вас же вроде были другие ошибки. Попробуйте в регулярном выражении удвоить все слеши.
13.01.2013 в 00:35

тролль - это не только ценный жир, но и 3-4 легкоусвояемых коммента ежедневно
18.01.2013 в 02:46

Всем спасибо!