vb.net中的正则表达式无法正常工作

时间:2018-06-11 12:57:10

标签: regex vb.net

我正在尝试将工作作为正则表达式。它应该只接受具有昏迷和撇号的字母数字。它们可以按任何顺序排列。我创建了一个只接受接受字符的方法。它似乎拒绝了我只想接受的角色。这是代码:

Public Shared Function formatToken_alphanumericWithSpecificSymbol(input As String) As String

    Dim pattern As String = "^[\w', ]+$"
    Dim rgx As Regex = New Regex(pattern)
    Dim mInput As StringBuilder = New StringBuilder()

    For Each c As Char In input

        If rgx.IsMatch(c.ToString()) Then
        Else
            mInput.Append(c)
        End If
    Next

    Return mInput.ToString()

End Function

假设只返回所有接受的字符。如果传递abc'*的示例:它应该只返回abc'

1 个答案:

答案 0 :(得分:1)

如果您只想过滤掉非法字符,可以执行此操作。

Dim pattern As String = "[^\w', ]"
Dim rgx As Regex = New Regex(pattern)
Return rgx.Replace(input, "")

如果字符串有效则返回

Dim pattern As String = "^[\w', ]+$"
Dim rgx As Regex = New Regex(pattern)
Return rgx.IsMatch(input)

只是为了对您的实现发表评论,您的代码无效的原因是您只是在ELSE条件中附加字符,删除其他内容并且它会起作用。然而,由于正则表达式可以在整个解决方案上运行,您应该让它自己而不是单独解析每个字符。