VB.NET 正则表达式 0-9 和 a-z 不起作用?

VB.NET Regular expression 0-9 and a-z not working?

如何为数字和字母制作正则表达式?每当我输入它时,它只读取字符串而不是随机化。假设我输入 312 <-- 这将是无效的标识符,因为它的数字变量没有按顺序排列。在字母上,我尝试了 a123456789,所以每当我输入 a1、a2、a3 时,它都会读作标识符,因为它是按顺序排列的。我还想创建另一个结合数字和字母的变量。

    Dim input As String = txtInput.Text
    Dim symbol As String = "\s*([-+*/=])\s*"
    Dim numbers As String = "123456789" //("[0-9]") <-- doesnt work?
    Dim letters As String = "abcdefghijklmnopqrstuvwxyz" // ("[a-z]")<-also

    Dim substrings() As String = Regex.Split(input, symbol)

    For Each match As String In substrings
        If symbol.Contains(match) Then
            lstOutput.Items.Add(match & " - operator")
        ElseIf numbers.Contains(match) Then
            lstOutput.Items.Add(match & " - number")
        ElseIf letters.Contains(match) Then
            lstOutput.Items.Add(match & " - identifier")
        Else
            lstOutput.Items.Add(match & " - Invalid Identifier")
        End If
    Next

输入:c1 + 2c + cad + c1b

预期输出:

c1 - 标识符

2c - 无效标识符 // 无效,因为第一个字符是数字

cad - 标识符

c1b - 标识符

您可以将正则表达式模式用于数字和标识符 Regex.IsMatch

数字模式:

  • ^ - 字符串开头
  • [0-9]* - 0+ 位
  • \.? - 一个可选的点
  • [0-9]+ - 1+ 位数
  • $ - 字符串结尾

标识符模式:

  • ^ - 字符串开头
  • [a-zA-Z_] - ASCII 字母或 _
  • [a-zA-Z0-9_]* - 0+ ASCII 字母、数字或 _
  • $ - 字符串结尾。

    将输入调暗为字符串 = "c1 + 2c + cad + c1b" Dim symbol As String = "\s*([-+/=])\s" Dim numbers As String = "^[0-9].?[0-9]+$" Dim letters As String = "^[a-zA-Z_][a-zA-Z0-9_]$"

    Dim substrings() As String = Regex.Split(输入,符号)

    For Each match As String In substrings If Regex.IsMatch(匹配, 符号) Then Console.WriteLine(匹配 & " - 运算符") ElseIf Regex.IsMatch(匹配, 数字) 然后 Console.WriteLine(匹配 & " - 数字") ElseIf Regex.IsMatch(匹配, 字母) Then Console.WriteLine(匹配 & " - 标识符") 别的 Console.WriteLine(匹配 & " - 无效标识符") 万一 下一个

看到VB.NET demo输出

c1 - identifier
+ - operator
2c - Invalid Identifier
+ - operator
cad - identifier
+ - operator
c1b - identifier