正则表达式检查字符串是否仅包含空格

5

我希望能有一个正则表达式来检查一个字符串是否只包含空格。

例如:" "

我目前正在使用以下的正则表达式:

[/^ *$/]

但是它也会检测到一个包含单词的字符串。

例如:"abc xyz"

我想在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) = '' 可以完成相同的功能,并且可能更高效。 - user330315
我同意@a_horse_with_no_name的看法。 - Vivek S.
@a_horse_with_no_name,我是postgresql的新手,既然您建议使用trim(),那我就会使用它。谢谢。 - chaitanya89
1个回答

3
你需要从正则表达式中移除[//]
IF r.colmn IS NULL  OR CAST(r.colmn as text) = '' 
       OR CAST(r.colmn as text) ~ '^ *$'
THEN
     RAISE NOTICE 'Do something';       
END IF;

谢谢,它正在工作,网站说我只能在10分钟后接受你的答案。你能解释一下为什么我需要删除那些吗? - chaitanya89
需要将其删除,因为Postgres正则表达式不像PHP那样需要任何分隔符,并且使用[]会使您的正则表达式无效,因为[]内的字符被解释为字符类。 - anubhava
如果我想测试我的字符串是否同时包含 空格换行符,且没有其他字符,正则表达式应该是什么? - Usama Tahir
3
@UsamaTahir '^\s*$',其中\s匹配任何空白字符,包括换行符。如果您只想匹配空格和换行符,可以使用'^[ \n]*$',但请注意,在Windows环境中,您可能还需要使用'^[ \n\r]*$',而如果您想捕获制表符等,则建议使用\s的解决方案。https://regexone.com/lesson/whitespaces - spex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接