^(?!\s*$).+
将匹配包含至少一个非空格字符的任何字符串。
所以
if (Regex.IsMatch(subjectString, @"^(?!\s*$).+")) {
// Successful match
} else {
// Match attempt failed
}
应该为你做。
^
将搜索锚定在字符串的开头。
(?!\s*$)
,即所谓的否定超前行为,断言只有在字符串末尾才匹配空白字符。
.+
然后将实际进行比赛。它将匹配直到字符串末尾的所有内容(换行符除外)。如果要允许换行,则必须设置RegexOptions.Singleline
选项。
遗留问题的上一个版本:
^\s*$
匹配仅包含空格(或为空)的字符串。
完全相反:
^\S+$
仅匹配仅由非空格字符组成的字符串,至少一个字符。
仅空格或空字符串,+ 1
以及空字符串。(虽然区别很小,但有时很重要,尽管在这种情况下不是csetzkorn想要的。)
我想我知道为什么它不起作用。我如何否定您的建议?含义-匹配所有内容,但不匹配空字符串。感谢和抱歉给您带来的困惑!
取反将
\S
匹配任何非空白字符(?!\ s * $)是负数,不是正数