2014-08-28 9 views
2

Я хочу регулярное выражение, чтобы проверить, имеет ли строка только пробелы.Regex проверить, имеет ли строка только пробелы

Пример: «»

настоящее время я использую это регулярное выражение

[/^ *$/] 

Но это также обнаружение строки, которая имеет слово в нем.

Пример: «а хуг»

Я хочу использовать это регулярное выражение в функции PostGreSQL как следующий

IF r.colmn IS NULL OR CAST(r.colmn as text) = '' 
     OR CAST(r.colmn as text) ~ '[/^ *$/]' -- regex not working 
THEN 
    RAISE NOTICE 'Do something';  
END IF; 

Есть ли регулярное выражение можно использовать в функции PostGreSQL, которая проверяет только строки с пробелами?

+2

Я не понимаю, почему регулярное выражение будет необходимо. 'if trim (r.colmn) = ''' сделает то же самое. И, вероятно, более эффективный, а также –

+0

. Я согласен с @a_horse_with_no_name –

+0

@a_horse_with_no_name. Я новичок в postgresql, и поскольку вы предлагаете, что функция trim() более эффективна, я буду использовать ее. Благодарю. – chaitanya89

ответ

1

Вы должны удалить [/ и /] из вашего регулярного выражения:

IF r.colmn IS NULL OR CAST(r.colmn as text) = '' 
     OR CAST(r.colmn as text) ~ '^ *$' -- regex not working 
THEN 
    RAISE NOTICE 'Do something';  
END IF; 
+0

Спасибо, он работает, и на сайте говорится, что я могу принять ваш ответ только через 10 минут. Не могли бы вы объяснить, почему мне нужно их удалить? – chaitanya89

+0

Его нужно удалить, поскольку регулярное выражение Postgres не требует каких-либо разделителей, подобных PHP, и использование '[' и ']' делает ваше регулярное выражение недопустимым, поскольку символы внутри '[' и ']' интерпретируются как класс символов. – anubhava

Смежные вопросы