我想匹配一个可以有任何类型的空格字符的字符串(特别是我使用的是PHP)。或者以任何方式判断一个字符串是空的还是只有空格也会有所帮助!
答案 0 :(得分:17)
您不需要正则表达式,只需使用:
if ( Trim ( $str ) === '' ) echo 'empty string';
答案 1 :(得分:8)
检查修剪过的字符串的长度,或者将修剪后的字符串与空字符串进行比较可能是最快且最容易阅读的,但在某些情况下您无法使用它(例如,使用框架时验证只采用正则表达式。
因为还没有其他人真正发布了正在运行的正则表达式...
if (preg_match('/\S/', $text)) {
// string has non-whitespace
}
或
if (preg_match('/^\s*$/', $text)) {
// string is empty or has only whitespace
}
答案 2 :(得分:2)
if (preg_match('^[\s]*$', $text)) {
//empty
}
else {
//has stuff
}
但你也可以
if ( trim($text) === '' ) {
//empty
}
编辑:更新正则表达式以匹配真正的空字符串 - 每个nickf(谢谢!)
答案 3 :(得分:1)
if(preg_match('^[\s]*[\s]*$', $text)) {
echo 'Empty or full of whitespaces';
}
^ [\ s] *表示文本必须以零或更多空格开头,[\ s] * $表示必须以零或更多空格结尾,因为表达式为“零或更多”,它还匹配空字符串
答案 4 :(得分:0)
你真的不需要正则表达式
if($str == '') { /* empty string */ }
elseif(trim($str) == '') { /* string of whitespace */ }
else { /* string of non-whitespace */ }
答案 5 :(得分:0)
如果字符串在开头或结尾包含空格,或者字符串为空或仅包含空格,则以下正则表达式通过前瞻和后观断言进行检查:
/^(?!\s).+(?<!\s)$/i
无效(内部“):
""
" "
" test"
"test "
有效(内部“):
"t"
"test"
"test1 test2"
答案 6 :(得分:-1)
表达式为\A\s*+\Z