正则表达式检查字符串是不是只有空格
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 spaces
和 new line characters
而没有其他内容,正则表达式会是什么?
@UsamaTahir '^\s*$'
,其中\s
匹配任何空格,包括new line
。如果您只需要space
和newline
,您可以使用'^[ \n]*$'
,但请记住,在Windows 环境中您可能还需要'^[ \n\r]*$'
,如果您想捕获选项卡等,我会推荐\s
解决方案。 regexone.com/lesson/whitespaces以上是关于正则表达式检查字符串是不是只有空格的主要内容,如果未能解决你的问题,请参考以下文章