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

use*_*652 3 vb.net string digits

我怎么能检查一个字符串是否只包含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 <<< :(
Run Code Online (Sandbox Code Playgroud)

当小于4或字符但不大于4时,返回false

谢谢!

Joe*_*orn 5

我实际上不会使用正则表达式.表达式看似简单(^\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 
Run Code Online (Sandbox Code Playgroud)

  • TryParse()不是和IsNumeric()相同.它实际上在结果中产生一个整数变量.IsNumeric()使用不同的实现与旧代码兼容,这是一个天真和愚蠢的功能. (2认同)