如何检查字符串是否只包含4位数字(或一年)
我试过这个
Dim rgx As New Regex("^/d{4}")
Dim number As String = "0000"
Console.WriteLine(rgx.IsMatch(number)) // true
number = "000a"
Console.WriteLine(rgx.IsMatch(number)) // false
number = "000"
Console.WriteLine(rgx.IsMatch(number)) //false
number = "00000"
Console.WriteLine(rgx.IsMatch(number)) // true <<< :(
当少于4个字符或在个字符但不超过4个字符时,返回false
谢谢!
我实际上不会为此使用正则表达式。该表达式看似简单(^d{4}$
),直到您意识到还需要计算该数值来确定有效的年份范围。。。除非你想要0013
或9015
这样的年份。无论如何,您最终很可能希望该值为整数。考虑到这一点,最好的验证可能只是立即尝试将其转换为整数:
Dim numbers() As String = {"0000", "000a", "000", "00000"}
For Each number As String In numbers
Dim n As Integer
If Integer.TryParse(number, n) AndAlso number.Length = 4 Then
'It's a number. Now look at other criteria
End If
Next
使用LINQ检查所有字符是否为IsDigit:
Dim result As Boolean = ((Not number Is Nothing) AndAlso ((number.Length = 4) AndAlso number.All(Function(c) Char.IsDigit(c))))
您应该使用.NET字符串操作函数。
首先是要求,字符串必须:
- 包含恰好四个字符,不多也不少
- 必须由数值组成
然而,您的目标是验证Date
:
Function isKnownGoodDate(ByVal input As String) As Boolean 'Define the function and its return value.
Try 'Try..Catch statement (error handling). Means an input with a space (for example ` ` won't cause a crash)
If (IsNumeric(input)) Then 'Checks if the input is a number
If (input.Length = 4) Then
Dim MyDate As String = "#01/01/" + input + "#"
If (IsDate(MyDate)) Then
Return True
End If
End If
End If
Catch
Return False
End Try
End Function
您可能会遇到警告:
函数
isKnownGoodDate
不会在所有代码上返回值路径。您是否缺少Return
语句?
可以安全地忽略这一点。