主题:  一个关于正则表达式的问题

比特空间

职务:普通成员
等级:3
金币:10.0
发贴:853
注册:2002/6/16 11:56:52
#12005/2/3 15:41:23
<%
Function CheckUserName(Strings)
Str=CStr(Strings)
boolTrue=RegEX("[^=]",Str)
If boolTrue="False" then
    Session("errmsg")="123"
    Exit Function
End if
OnlyStr=Str
End Function

Function RegEX(patrn,strng)
Dim strRegEx,Match,Matches,retVal
Set strRegEx = New RegExp
strRegEx.Pattern = patrn
strRegEx.IgnoreCase = False
strRegEx.Global = True
retVal = strRegEx.Test(strng)
RegEX = retVal
End Function

Session("errmsg")=""
text="=1"
CheckUserName(text)
Response.Write Session("errmsg")
%>

表达式设置成不能包含=但是text中包含=却没有显示error如果光=就可以了,似乎只要包含这个表达式所不允许的以外的值就一定不会显示error了,到底应该该怎么写,才能判断值整个text



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
#22005/2/3 20:24:01
Function CheckUserName(Strings)
    Str=CStr(Strings)
    boolTrue=RegEX("[^=]",Str)
    If boolTrue=true then
    Session("errmsg")="123"
    Exit Function
    End if
    OnlyStr=Str
End Function


非常大鱼

比特空间

职务:普通成员
等级:3
金币:10.0
发贴:853
注册:2002/6/16 11:56:52
#32005/2/3 20:37:29
斑竹,我试了一下,如果text为1的话还是输出123,照理说是不应该输出任何东西的啊?我只定义了不能为=,1显然不是=啊



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
#42005/2/3 20:47:13
boolTrue=RegEX("^=",Str)


非常大鱼

比特空间

职务:普通成员
等级:3
金币:10.0
发贴:853
注册:2002/6/16 11:56:52
#52005/2/3 20:51:59
我搞懂了,是我的概念错误,还有一个问题^在""里应该是表示匹配输入字符串的开始位置的吧?只有在[]里才表示不接受该字符集合吧?我想知道加不加[]有什么区别么比如[^=]和^=有什么区别?

编辑历史:[此帖最近一次被 塔布里斯 编辑过(编辑时间:2005-02-03 21:01:07)]


蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
#62005/2/3 22:01:57
给搞混了,"[^=]"是对的,^=表示第一个"="。
这z匹配的是非"="字符,"=1"匹配的是"1",而"1"也是匹配"1",当然全部匹配了,试试匹配"=="


非常大鱼

比特空间

职务:普通成员
等级:3
金币:10.0
发贴:853
注册:2002/6/16 11:56:52
#72005/2/4 10:02:34
蓝鲸在上个帖子中说
引用:
给搞混了,"[^=]"是对的,^=表示第一个"="。
这z匹配的是非"="字符,"=1"匹配的是"1",而"1"也是匹配"1",当然全部匹配了,试试匹配"=="


=1匹配的是"1"?我不明白意思,是指[^=]还是^=的情况=1匹配的是"1",为什么?



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
注册:2003/11/27 18:07:11
#82005/2/4 10:37:04
If RegEX("=",Str) Then 'if '=' found
Session("errmsg")="123"
Exit Function
End if

InStr也可以完成这个任务:
If InStr(str,"=")>0 Then