我如何处理vb.net中的特殊字符?

时间:2014-02-06 22:29:59

标签: regex character-encoding character

特殊字符集:`〜!@#$%^& *()_- + = {} [] \ | :;“”'<>,。?/

这是在该特殊字符集中搜索项目的正确方法吗?

    Regex.IsMatch(Result.Text, "^[`-/]")

我总是收到错误....我需要使用ASCII码吗?如果是这样,我该怎么做?提前谢谢!

3 个答案:

答案 0 :(得分:3)

正则表达式具有与VB.NET不同的转义语法和规则。由于您在代码中处理正则表达式字符串,因此必须确保正确地为正则表达式和VB.NET转义字符串。

在您的示例中, - 需要使用...

进行转义
Regex.IsMatch(Result.Text, "^[`\-/]")

要匹配提供的字符串中的任何字符,请尝试此操作...

Regex.IsMatch(Result.Text, "[`~!@#\$%\^&\*\(\)_\-\+=\{\}\[\]\\\|:;""'<>,\.\?/]")

答案 1 :(得分:1)

试试这个:

[`~!@#$%^&*()_+={}\[\]\\|:;""'<>,.?/-]

工作正则表达式示例:

http://regex101.com/r/aU3wO9

在字符集中,只需要转义其中一些字符集。例如]\,如果-在最后,则无需转义。我不确定[所以我还是逃过了它。

答案 2 :(得分:0)

您可以在字符串中使用具有特殊字符的转义字符

Dim str() As Byte
Dim j, n As Long
Dim ContainsSpecialChar As Boolean
Dim TempVendorName As String
str = Trim(VendorName)
n = 1

For j = 0 To UBound(str) - 1 Step 2
    If (str(j) > 32 And str(j) < 47) Or (str(j) > 57 And str(j) < 65) Or (str(j) > 90 And str(j) < 97) Or (str(j) > 122) Then
         ContainsSpecialChar = True
         TempVendorName = Left(VendorName, n - 1) + "\" + Mid(VendorName, n)
         n = n + 1
    End If
    n = n + 1
Next