i want to match a string that can have any type of whitespace chars (specifically I am using PHP). or any way to tell if a string is empty or just has whitespace will also help!
You don't need regular expressions for that, just use:
if ( Trim ( $str ) === '' ) echo 'empty string';
if(preg_match('^[\s]*[\s]*$', $text)) {
echo 'Empty or full of whitespaces';
}
^[\s]* means the text must start with zero or more whitespace end [\s]*$ means must and with zero ro more whitespace, since the expressions are "zero or more", it also matches null strings. It's useess to capture whitespace filled or null strings so I didn't use matching parentheses.
You don't really need a regex
if($str == '') { /* empty string */ }
elseif(trim($str) == '') { /* string of whitespace */ }
else { /* string of non-whitespace */ }
if (preg_match('^[\s]*$', $text)) {
//empty
}
else {
//has stuff
}
but you can also do
if ( trim($text) === '' ) {
//empty
}
Edit: updated regex to match a truly empty string - per nickf (thanks!)
Checking the length of the trimmed string, or comparing the trimmed string to an empty string is probably the fastest and easiest to read, but there are some cases where you can't use that (for example, when using a framework for validation which only takes a regex).
Since no one else has actually posted a working regex yet...
if (preg_match('/\S/', $text)) {
// string has non-whitespace
}
or
if (preg_match('/^\s*$/', $text)) {
// string is empty or has only whitespace
}