Is it possible to use a regular expression to detect anything that is NOT an "empty string" like this:
string s1 = "";
string s2 = " ";
string s3 = " ";
string s4 = " ";
etc.
I know I could use trim etc. but I would like to use a regular expression.
^(?!\s*$).+
will match any string that contains at least one non-space character.
So
if (Regex.IsMatch(subjectString, @"^(?!\s*$).+")) {
// Successful match
} else {
// Match attempt failed
}
should do this for you.
^
anchors the search at the start of the string.
(?!\s*$)
, a so-called negative lookahead, asserts that it's impossible to match only whitespace characters until the end of the string.
.+
will then actually do the match. It will match anything (except newline) up to the end of the string. If you want to allow newlines, you'll have to set the RegexOptions.Singleline
option.
Left over from the previous version of your question:
^\s*$
matches strings that contain only whitespace (or are empty).
The exact opposite:
^\S+$
matches only strings that consist of only non-whitespace characters, one character minimum.
only whitespace or an empty string, +1
As well as the empty string. (A small distinction, but sometimes an important one, though not in this case as csetzkorn wants that.)
I think I know why it does not work. How do I negate your suggestion? Meaning - match everything but not empty strings. Thanks and sorry about the confusion!
The negation would be
\S
which would match any non-whitespace character(?!\s*$) is a negative lookahead, not positive