目前,在我的程序中,我使用以下Regex
方法和if
语句检查我的字符串以查看它们是否不是整数值:
if(Regex.IsMatch(myString, @"^d+$") == false) {}
但是,我需要允许诸如"45 23 12"之类的值。这些值涉及空格,我相信这些空格被Regex
算作字符,因为每当我尝试像上一个这样的示例时,我的代码都会返回 false。
如何在允许使用空格的同时检查非整数的值?
此问题使用Regex.Matches(myString,@"[a-zA-Z]").Count
来检查字符串中"a-z"中出现的所有字符,这不涉及" "。但是,当我在if
语句中使用它时,我注意到它是 Int 类型,无法与带有 ==
的 false
进行比较。
if(! Regex.IsMatch(myString, @"^s*d(d|s)*$")) { ... }
我会使用正则表达式
^d+(sd+)*$
解释:
^ beginning of line.
d+ one or more digits.
(sd+)* zero, one or more repetitions of space + one or more digits.
$ end of line.
if (!Regex.IsMatch(myString, @"^d+(sd+)*$")) {
...
}
并请写
!<boolean expression>
而不是<boolean expression> = false
.
和
<Boolean expression>
而不是<Boolean expression> = true
.
你不写1 * x
,而只是x
.
很多人认为if语句需要比较。他们没有。他们需要的是一个布尔表达式,即产生 true
或 false
值的表达式。 Regex.IsMatch(...)
返回一个bool
值,这就是我们所需要的。
尝试以下正则表达式(如果我正确理解您的问题。
^(?:d|s)+$
它似乎可以做你想做的事,这是对它的测试。