如题! vb中该如何过滤出“?><":=~#/\——*”,比如:我有一个文本类型的字段name,我要检查name中是否包含“?><":=~#/\——*”这些字符,该如何实现,
谢谢各位! 

解决方案 »

  1.   

    1.用instr
     如判断是否有?
      instr(1,name,"?")2.用正则表达式
      

  2.   

    你想要查的是字段内容中是否包含通配符吧?这得看你的数据库是SQL Server,还是Access。1、在SQL Server中,如果想查name字段中含有百分号(%)的所有记录,可以使用下面的Select语句。
    select * from 表名 where name like '%@%%'  ESCAPE  '@'
    其中ESCAPE  '@'是用来定义转义字符,就是说紧挨着@后的那个百分号不是通配符。2、在Access中,使用方括号([])定义转义字符。比如,要查询name中含有井号(#)的所有记录。select * from 表名 where name like  '*[#]*' 呵呵呵,这些是我将要出版的书中的小部分内容的截取。希望对你有用!
      

  3.   


    '引用 MS Script Control 1.0 
    '判断是否匹配 "判断串","判断字符",全部与一,区分大小写与否
    Public Function Test( _
                    sPattern As String, _
                    sVailDate As String, _
                    bGlobal As Boolean, _
                    bCase As Boolean) _
                    As Boolean
        'On Error GoTo er
        Dim Rex As New RegExp
        Rex.Global = bGlobal       '全部与一   TRUE=全部
        Rex.IgnoreCase = bCase   '区分大小写 TRUE=不区分
        Rex.Pattern = sPattern
        Test = Rex.Test(sVailDate)
        Exit Function
    er:
        Debug.Print Err.Number; Err.Description
        Test = False
        Exit Function
    End Function'调用
     if Test("?","fdfdsf?vfds", True,True) = True then 
        ' 判断 "fdfdsf?vfds" 中是否有 "?"
     end if
      

  4.   


    Option Explicit
    Public Function Test( _
                    sPattern As String, _
                    sVailDate As String, _
                    bGlobal As Boolean, _
                    bCase As Boolean) _
                    As Boolean
        'On Error GoTo er
        Dim Rex As New RegExp
        Rex.Global = bGlobal       '全部与一   TRUE=全部
        Rex.IgnoreCase = bCase   '区分大小写 TRUE=不区分
        Rex.Pattern = sPattern
        Test = Rex.Test(sVailDate)
        Exit Function
    er:
        Debug.Print Err.Number; Err.Description
        Test = False
        Exit Function
    End Function
    Private Sub Command1_Click()
     MsgBox Test("[\*\?><"":=~#/\\—-]", Text1.Text, True, True)
      '当Text1.text中有以下字符时,会返回True  ?> <":=~#/\—-*
    End Sub
      

  5.   

    接上:在使用我上面例子,请引用Microsoft VBScript Regular Expressions 5.5 库文件
      

  6.   

    function guolu(str)
    Dim a,b
    A = Array("?","&",";","'",chr(9),"(","$",")","@","--","*")
    For each b In a
    If instr(str,b) Then
    response.write "非法操作!"
    response.end
    end if
    next
    guolu=str
    end function调用aa=guolu(aa)("?","&",";","'",chr(9),"(","$",")","@","--","*")这里是你要检测的字符
      

  7.   

      怎么样引用Microsoft VBScript Regular Expressions 5.5库文件呢 
      

  8.   

    菜单操作:
    (主菜单) 工程=>(子菜单) 引用弹出对话框 可引用的列表向下拉.
    找到
    Microsoft VBScript Regular Expressions 5.5让其打上勾我上面给出了二种解决方法.第二种引用此库文件的就是 正则表达式的解决方案.
      

  9.   

    八进制 十六进制 十进制 字符 八进制 十六进制 十进制 字符 
    00 00 0 nul 100 40 64 @ 
    01 01 1 soh 101 41 65 A 
    02 02 2 stx 102 42 66 B 
    03 03 3 etx 103 43 67 C 
    04 04 4 eot 104 44 68 D 
    05 05 5 enq 105 45 69 E 
    06 06 6 ack 106 46 70 F 
    07 07 7 bel 107 47 71 G 
    10 08 8 bs 110 48 72 H 
    11 09 9 ht 111 49 73 I 
    12 0a 10 nl 112 4a 74 J 
    13 0b 11 vt 113 4b 75 K 
    14 0c 12 ff 114 4c 76 L 
    15 0d 13 er 115 4d 77 M 
    16 0e 14 so 116 4e 78 N 
    17 0f 15 si 117 4f 79 O 
    20 10 16 dle 120 50 80 P 
    21 11 17 dc1 121 51 81 Q 
    22 12 18 dc2 122 52 82 R 
    23 13 19 dc3 123 53 83 S 
    24 14 20 dc4 124 54 84 T 
    25 15 21 nak 125 55 85 U 
    26 16 22 syn 126 56 86 V 
    27 17 23 etb 127 57 87 W 
    30 18 24 can 130 58 88 X 
    31 19 25 em 131 59 89 Y 
    32 1a 26 sub 132 5a 90 Z 
    33 1b 27 esc 133 5b 91 [ 
    34 1c 28 fs 134 5c 92 \ 
    35 1d 29 gs 135 5d 93 ] 
    36 1e 30 re 136 5e 94 ^ 
    37 1f 31 us 137 5f 95 _ 
    40 20 32 sp 140 60 96 ' 
    41 21 33 ! 141 61 97 a 
    42 22 34 " 142 62 98 b 
    43 23 35 # 143 63 99 c 
    44 24 36 $ 144 64 100 d 
    45 25 37 % 145 65 101 e 
    46 26 38 & 146 66 102 f 
    47 27 39 ` 147 67 103 g 
    50 28 40 ( 150 68 104 h 
    51 29 41 ) 151 69 105 i 
    52 2a 42 * 152 6a 106 j 
    53 2b 43 + 153 6b 107 k 
    54 2c 44 , 154 6c 108 l 
    55 2d 45 - 155 6d 109 m 
    56 2e 46 . 156 6e 110 n 
    57 2f 47 / 157 6f 111 o 
    60 30 48 0 160 70 112 p 
    61 31 49 1 161 71 113 q 
    62 32 50 2 162 72 114 r 
    63 33 51 3 163 73 115 s 
    64 34 52 4 164 74 116 t 
    65 35 53 5 165 75 117 u 
    66 36 54 6 166 76 118 v 
    67 37 55 7 167 77 119 w 
    70 38 56 8 170 78 120 x 
    71 39 57 9 171 79 121 y 
    72 3a 58 : 172 7a 122 z 
    73 3b 59 ; 173 7b 123 { 
    74 3c 60 < 174 7c 124 | 
    75 3d 61 = 175 7d 125 } 
    76 3e 62 > 176 7e 126 ~ 
    77 3f 63 ? 177 7f 127 del 
      可以看出 9表示 ht
      

  10.   

    下面这个程序适合对半角英文字符串进行过滤,可以滤除所有符号。
    Private Sub Command1_Click()
      Dim tFilter() As Byte     '过滤表
      
      ReDim tFilter(0 To 255)
      
      Dim tIndex As Long
      
      '将有效字节添加到过滤表
      
      For tIndex = 48 To 57     '数字
        tFilter(tIndex) = 1
      Next
      For tIndex = 65 To 90     '大写字母
        tFilter(tIndex) = 1
      Next
      For tIndex = 97 To 122    '小写字母
        tFilter(tIndex) = 1
      Next
      
      Dim tBytes() As Byte
        
      tBytes() = StrConv(Text1.Text, vbFromUnicode) '从Text1.Text取文本转换为Byte数组
      
      '过滤tBytes()到tOutBytes()
      
      Dim tOutBytes() As Byte
      Dim tOutBytes_Index As Long
      
      For tIndex = 0 To UBound(tBytes())
        
        '如果Byte值在过滤表中为真(有效),则添加该Byte到输出tOutBytes()。反之,则被放弃于tOutBytes()以外。
        
        If CBool(tFilter(tBytes(tIndex))) Then
          
          ReDim Preserve tOutBytes(tOutBytes_Index)
          
          tOutBytes(tOutBytes_Index) = tBytes(tIndex)
          
          tOutBytes_Index = tOutBytes_Index + 1
                
        End If
        
      Next
      
      Text2.Text = StrConv(tOutBytes(), vbUnicode)  '将tOutBytes()转换回字符串显示到Text2.Text
      
    End Sub
    如果过滤条件不变,则过滤表可以定义为Public或Private的公共数组,可以重复使用。