正则表达式检查字符串是不是只有空格

Posted

技术标签:

【中文标题】正则表达式检查字符串是不是只有空格【英文标题】:Regex to check if a string has only spaces正则表达式检查字符串是否只有空格 【发布时间】:2014-08-28 07:48:54 【问题描述】:

我想要一个正则表达式来检查一个字符串是否只有空格。

示例:“”

我目前正在使用这个正则表达式

[/^ *$/]

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

示例:“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 函数中使用任何正则表达式,它只检查只有空格的字符串吗?

【问题讨论】:

我不明白为什么需要正则表达式。 if trim(r.colmn) = '' 会做同样的事情。而且可能效率更高 我同意@a_horse_with_no_name @a_horse_with_no_name,我是 postgresql 的新手,因为你建议 trim() 更有效,所以我会使用它。谢谢。 【参考方案1】:

您需要从您的正则表达式中删除 [//]

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 分钟后接受你的回答。你能解释一下为什么我需要删除这些吗? 它需要被删除,因为 Postgres 正则表达式不需要像 php 那样的任何分隔符,并且使用 [] 会使您的正则表达式无效,因为 [] 中的字符被解释作为字符类。 如果我想测试我的字符串是否同时包含 empty spacesnew line characters 而没有其他内容,正则表达式会是什么? @UsamaTahir '^\s*$',其中\s 匹配任何空格,包括new line。如果您只需要spacenewline,您可以使用'^[ \n]*$',但请记住,在Windows 环境中您可能还需要'^[ \n\r]*$',如果您想捕获选项卡等,我会推荐\s 解决方案。 regexone.com/lesson/whitespaces

以上是关于正则表达式检查字符串是不是只有空格的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式检查是不是存在确切的字符串

正则表达式检查集合的第一个和最后一个字符是不是不同

如何获得正则表达式来检查字符串是不是仅包含字母字符 [a-z] 或 [A-Z]?

利用正则表达式去掉字符串的前后空格

IBAN 的正则表达式允许空格并检查确切长度

正则表达式,检测字符串中没有空格