51Testing软件测试论坛

标题: 求一判断字符串有效的vb脚本代码(字符串只能包含数字和英文字母) [打印本页]

作者: minliu    时间: 2006-4-12 16:20
标题: 求一判断字符串有效的vb脚本代码(字符串只能包含数字和英文字母)
谢谢!!!
作者: Horus_Ra    时间: 2006-4-12 16:35
很简单啊~~利用Ascii来判断啊~~
不等于58 ~57、65~90、97~122
作者: minliu    时间: 2006-4-12 23:19
刚学,

public Function isnotvalid(strUser)
Dim i,c
  For i=1 to Len(strUser)
          c=Left(strUser,i)
     if(not(48<c<57 Or 65<c<90 Or 97<c<122))then//有误,请问应怎样判断
     isnotvalid=true
      exit Function
           end if
   next
   isnotvalid=false
end Function

是这样吗,谢谢

[ 本帖最后由 minliu 于 2006-4-13 09:23 编辑 ]
作者: BiSheng    时间: 2006-4-13 09:38
你也可以用正则表达式来判断!
你的脚本有明显的语法错误:for循环能循环吗?len中的子符要用双引号的。
  你的left函数也有错误:1,left中的字符串要用双引号;2,这里不应该用left函数,因为当i>1时返回的就是多个字符,建议你用MID函数每次获取一个字符,例:mid("strUser",i,1);  还有每次获取字符后要用Asc函数转化后才能进行比较
作者: 我要做SQAD    时间: 2006-4-13 09:44
"len中的子符要用双引号"
应该不需要把,strUser是个参数.
作者: BiSheng    时间: 2006-4-13 09:59
你可以部分地这样修改(建议用正则表达式而不用这么麻烦!)
Dim i,c
   
  For i = 1 to len("stU123*&")

          c = asc(mid("strU123*&",i,1))
          msgbox c
          If( (asc(48)<c)and(c>asc(57)) )or ((asc(65)<c)and (c<asc(90)))or ((asc(97)<c)and(c<asc(122)))Then
             msgbox("right!")
        else
             msgbox("error!")
          End If
  Next
作者: minliu    时间: 2006-4-13 11:09
谢谢,请问用正则式怎么实现,麻烦了。

[ 本帖最后由 minliu 于 2006-4-13 13:08 编辑 ]




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2