vb.net字符串只包含4位数字(或一年)



如何检查字符串是否只包含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}$),直到您意识到还需要计算该数值来确定有效的年份范围。。。除非你想要00139015这样的年份。无论如何,您最终很可能希望该值为整数。考虑到这一点,最好的验证可能只是立即尝试将其转换为整数:

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语句?

可以安全地忽略这一点。

最新更新