如题! vb中该如何过滤出“?><":=~#/\——*”,比如:我有一个文本类型的字段name,我要检查name中是否包含“?><":=~#/\——*”这些字符,该如何实现,
谢谢各位!
谢谢各位!
解决方案 »
- 如何去掉Webbrowser控件的左右、上下移动条?(Webbrowser控件比较小时会出现)
- 请教,如何利用VB搜索*.exe文件(指定目录下,包括子目录),同时得到文件的名称?
- 窗体的Tag属性问题
- 查找的时候如果判断到了文件的结尾
- 问了许久,没有人回答,不知道是不是都没遇到过,再来问一遍,急!!!在线等!!!
- 请教一个关于MSHFLEXGRID固定标头行问题
- 如何在installsheild打包的程序安装完成后,激活指定的程序?
- 我想请问如何改变Vscrollbar外观
- VB中如何把一个对象写入到文件中
- 关于前后台程序的问题
- 求加权平均值的sql语句
- 怎么用Vb把一个可执行文件 EXE 添加到桌面运行之前
如判断是否有?
instr(1,name,"?")2.用正则表达式
select * from 表名 where name like '%@%%' ESCAPE '@'
其中ESCAPE '@'是用来定义转义字符,就是说紧挨着@后的那个百分号不是通配符。2、在Access中,使用方括号([])定义转义字符。比如,要查询name中含有井号(#)的所有记录。select * from 表名 where name like '*[#]*' 呵呵呵,这些是我将要出版的书中的小部分内容的截取。希望对你有用!
'引用 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
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
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),"(","$",")","@","--","*")这里是你要检测的字符
(主菜单) 工程=>(子菜单) 引用弹出对话框 可引用的列表向下拉.
找到
Microsoft VBScript Regular Expressions 5.5让其打上勾我上面给出了二种解决方法.第二种引用此库文件的就是 正则表达式的解决方案.
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
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的公共数组,可以重复使用。