2015-05-02 2 views
0

У меня есть следующие RegExp в MySql:RegExp выпуск в MySQL Постулаты

WHERE telephone NOT REGEXP'(^[+][0-9]+\)?([0-9]{3}\-[0-9]{3}\-[0-9]{4})(\ x[0-9]+$)?' 

Это должно выбрать все номера телефонов, которые не в формате +0 000-000-0000 x000. Он работает почти идеально, за исключением того, что у меня есть один клиент, который вступил в 000-000-0000</span> в телефонное поле, и это выражение не находит его. Я знаю, что он настроен на принятие дополнительного расширения, но как я могу убедиться, что дополнительное расширение находится в правильном формате?

+0

Что делать, если вы измените '(\ х [0-9] + $)' в '(\ х [0-? 9] +)? $ '? Вы также можете изменить '(^ [+] [0-9] + \)?' На '^ ([+] [0-9] + \)?' – SmokeyPHP

+0

Очистить данные '' (и т.д.) _before_ хранение в таблицу. –

+0

@rick LOL - вот вся причина, по которой я написал эту функцию. Я, чтобы очистить все дерьмовые люди, вложил и не допустил ничего подобного в будущем. – user3167249

ответ

1

Добавить концовки якорь к тому, что у вас есть:

^([+][0-9]+\)?([0-9]{3}\-[0-9]{3}\-[0-9]{4})(\ x[0-9]+)?$ 

Demo