主题:  请教正则表达式问题?

liangzn28

职务:普通成员
等级:1
金币:0.0
发贴:60
#12005/10/14 15:38:58
小妹我是想利用正则表达式来判断一个输入Email地址是否是合法的,但是就无论我输入的值是否是一个合法

的Email,返回的值都是flase,都不知道是哪段代码错了,请大虾们帮帮小妹吧!
问题阐述如下:
1.asp的form表单代码如下,作用是向textfield里面输入一个Email地址,提交给2.asp页面去验证
<form name="form1" method="post" action="2.asp">
<p>
<input name="textfield" type="text" size="30">
</p>
<p>
<input type="submit" name="Submit" value="提交">
</p>
</form>


2.asp
<%
Function CheckExp(patrn, strng)
Dim regEx, Matches ' 建立变量。
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = true ' 设置是否区分字符大小写。
regEx.Global = True ' 设置全局可用性。
Matches = regEx.test(strng) ' 执行搜索。
CheckExp = Matches

response.write "你输入的是:"&a&"<br>" '输出a的值,也就是在1.asp里输入textfield的值

response.Write "是否符合要求:"&matches
'输出matches的值(true/flase),若1.asp里输入textfield的值是一个合法的Email地址的话就输出True,否

则输出false,这里就是问题所在之处,无论我在1.asp中输入textfield的值是不是一个合法的Email地址,输出

结果都是false,不知道为什么会是这样,难道是下面的正则表达式错误了吗?

End Function
%>

<%
Dim a
a=request.Form("textfield"
call CheckExp("\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ,"a" '这里是利用正则表达式做为参

来调用上面的CheckExp(patrn,strng)来判断a(1.asp中输入的Email地址)
%>


大虾们,为了解决这个问题我在网上搜索了很多相关的文章,判断Email地址的正则表达式也换了不少,还是不

成功,请大虾们帮帮忙,在此先谢了.



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#22005/10/14 15:52:07
变量不可以加引号,否则就是字符串常量了
call CheckExp("....................",a)



莫言

职务:普通成员
等级:1
金币:-3.5
发贴:143
#32005/10/17 14:17:34
看不懂



icerain

职务:普通成员
等级:1
金币:1.0
发贴:249
#42005/10/17 14:30:18
复制过去直接用。保证好使!!!!!

email=request.form("email")'-------------取得EMAIL字符串

function IsValidEmail(email)'判断-------------------------
dim names, name, i, c
IsValidEmail = true
names = Split(email, "@") '-----------判断有否@-------------------
if UBound(names) <> 1 then '------------------------无----------------------
IsValidEmail = false
exit function
end if
for each name in names '分割的每段长度-----------------
if Len(name) <= 0 then
IsValidEmail = false
exit function
end if
for i = 1 to Len(name)
c = Lcase(Mid(name, i, 1)) '------------分割成每个字母或数字------------------
if InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0 and not IsNumeric(c) then
IsValidEmail = false
exit function
end if
next
if Left(name, 1) = "." or Right(name, 1) = "." then '---------------------
IsValidEmail = false
exit function
end if
next
if InStr(names(1), ".") <= 0 then
IsValidEmail = false
exit function
end if
i = Len(names(1)) - InStrRev(names(1), ".") '---------------------------
if i <> 2 and i <> 3 then
IsValidEmail = false
exit function
end if
if InStr(email, "..") > 0 then
IsValidEmail = false
end if

end function '------------------------函数结束



liangzn28

职务:普通成员
等级:1
金币:0.0
发贴:60
#52005/10/18 12:53:54
呵呵,我知道了,
对就是a的错,

对于icerainzd的给我的这段代码应该也是可以,不过这样做就显得有点复杂咯!

谢谢啦!



woogia

职务:普通成员
等级:1
金币:0.0
发贴:202
#62005/10/29 22:51:55
RegExp 这是个什么东东? 怎么没有见过?

现在正则表达式都可以用一个函数来判断了啊, 真先进.