Regex 验证并格式化MAC地址

Regex 验证并格式化MAC地址,regex,vbscript,Regex,Vbscript,我正在写一个vb脚本,用输入框查询无线控制器的mac地址。因此,您需要像这样输入98:09:cf:4b:dd:ff 我想做的是允许用户像这样输入mac9809cf3bddff,让脚本或输入框代码自动添加:,我怎么做?当您要求某人键入mac地址时,您必须在处理另一个任务之前检查并验证它,因此,我添加了一个函数,在转换它之前,使用正则表达式RegExp对其进行测试和验证 Option Explicit Dim Title,MAC_Entered Title = "Validate MAC Addre

我正在写一个vb脚本,用输入框查询无线控制器的mac地址。因此,您需要像这样输入
98:09:cf:4b:dd:ff


我想做的是允许用户像这样输入mac
9809cf3bddff
,让脚本或输入框代码自动添加
,我怎么做?

当您要求某人键入mac地址时,您必须在处理另一个任务之前检查并验证它,因此,我添加了一个函数,在转换它之前,使用正则表达式
RegExp
对其进行测试和验证

Option Explicit
Dim Title,MAC_Entered
Title = "Validate MAC Address and transform it !"
Do 
    MAC_Entered = Trim(InputBox("Please enter a MAC Address for checking and validate it",Title,"9809cf3bddff"))
    If MAC_Entered = "" Then Wscript.Quit(1) 
    If IsValid(MAC_Entered) = False Then
        MsgBox DblQuote(MAC_Entered) & " is not a valid MAC Address !" & vbcrlf &_ 
        "Please re-try again !",vbExclamation,Title
    End If
Loop Until IsValid(MAC_Entered) = True

MsgBox DblQuote(MAC_Entered) & vbCrlf &_
"After Transformation" & vbCrlf &_ 
DblQuote(Transform(MAC_Entered)),vbInformation,Title

'--------------------------------------------------
Function IsValid(Entered)
    Dim RegularExpressionObject
    Set RegularExpressionObject = New RegExp
    With RegularExpressionObject
        .Pattern = "^(?:[0-9a-fA-F]{2}[:-]?){5}(?:[0-9a-fA-F]{2}?)$"
        If .Test(Entered)= True then
            IsValid = True
        end if
    End With
End Function
'-------------------------------------------------
Function DblQuote(Str)
    DblQuote = Chr(34) & Str & Chr(34)
End Function
'-------------------------------------------------
Function Transform(MAC)
    Dim i,NewMAC
    If InStr(MAC,":") > 0 Then Transform = MAC : Exit Function
    If InStr(MAC,"-") > 0 Then
        NewMAC = Replace(MAC,"-",":")
        Transform = NewMAC
    Else
        For i = 1 To Len(MAC) Step 2
            NewMAC = NewMAC & Mid(MAC,i,2) & ":" 
        Next
    End If
    Transform = Left(NewMAC,Len(MAC)+(Len(MAC)\2 - 1))
End Function
'-------------------------------------------------

当您要求某人键入MAC地址时,您必须在处理另一个任务之前对其进行检查和验证,因此,出于这个原因,我添加了一个函数,在转换它之前使用正则表达式
RegExp
对其进行测试和验证

Option Explicit
Dim Title,MAC_Entered
Title = "Validate MAC Address and transform it !"
Do 
    MAC_Entered = Trim(InputBox("Please enter a MAC Address for checking and validate it",Title,"9809cf3bddff"))
    If MAC_Entered = "" Then Wscript.Quit(1) 
    If IsValid(MAC_Entered) = False Then
        MsgBox DblQuote(MAC_Entered) & " is not a valid MAC Address !" & vbcrlf &_ 
        "Please re-try again !",vbExclamation,Title
    End If
Loop Until IsValid(MAC_Entered) = True

MsgBox DblQuote(MAC_Entered) & vbCrlf &_
"After Transformation" & vbCrlf &_ 
DblQuote(Transform(MAC_Entered)),vbInformation,Title

'--------------------------------------------------
Function IsValid(Entered)
    Dim RegularExpressionObject
    Set RegularExpressionObject = New RegExp
    With RegularExpressionObject
        .Pattern = "^(?:[0-9a-fA-F]{2}[:-]?){5}(?:[0-9a-fA-F]{2}?)$"
        If .Test(Entered)= True then
            IsValid = True
        end if
    End With
End Function
'-------------------------------------------------
Function DblQuote(Str)
    DblQuote = Chr(34) & Str & Chr(34)
End Function
'-------------------------------------------------
Function Transform(MAC)
    Dim i,NewMAC
    If InStr(MAC,":") > 0 Then Transform = MAC : Exit Function
    If InStr(MAC,"-") > 0 Then
        NewMAC = Replace(MAC,"-",":")
        Transform = NewMAC
    Else
        For i = 1 To Len(MAC) Step 2
            NewMAC = NewMAC & Mid(MAC,i,2) & ":" 
        Next
    End If
    Transform = Left(NewMAC,Len(MAC)+(Len(MAC)\2 - 1))
End Function
'-------------------------------------------------

使用
For
循环一次执行
步骤
到2,插入
“:”
,然后
左()
最后一个字符串
Len()
-1修剪最后一个
”:“
。这不是一个困难的脚本,在互联网上可能有无数的例子。使用
For
循环,一次执行
步骤
,插入
“:”
,然后
左()
最后一个字符串
Len()
-1修剪最后一个
”:“
。这不是一个困难的脚本,在互联网上可能有无数的例子。