日期:2009-01-03  浏览次数:20839 次

一、引言
写表单代码是我们经常要做的事情,并且常常变得非常复杂和凌乱。这篇文章将介绍如何用规则公式来简化你的代码。
二、提出问题
书写表单确认代码不仅仅是检查是否空值或寻找特定数据类型的问题,事情可能要比这杂乱得多。一个简单的例子,要求用户输入E-mail地址。你需要确定用户是否输入的是如a@b.c的形式,而不是别的。这个问题就会很复杂。

三、解决方法
归结一点,就是使用正则表达式。可能是因为uinx平台在它一开始就支持这项技术,所以微软毫无吹捧地把它解释为脚本平台。下面是微软的定义:
正则表达式是由普通字符(如,字母a到z)和特殊字符(如元字符)组成的文本样式。样式描述一个或多个用来匹配的字符串。规则样式是和搜索出的字串进行匹配的模板。
四、例子
微软的语法检测做得不错。但是,如期望的,在实际例子上,它们很短。下面是简单的例子:
'例1

Function ValidateEmail(Expression)
Dim objRegExp
Set objRegExp = New RegExp
objRegExp.Pattern = "^[\w\.-]+@[\w\.-]+\.[a-zA-Z]+$"
ValidateEmail = objRegExp.Test(Expression)
End Function
例1是一个检测e-mail地址的例子。初看之下,样式字串很乱,实际上一点也不。让我们来仔细研究一下它的每个元素。
^ - 表示从输入的第一个字符开始查找匹配的字符。
[\w\.-]+ - 中括号表示字符的范围。"\w"表示可以是任何命令字符包括下划线,相当于"[A-Za-z0-9_]"。"\."表示增加句点到字符范围内。句点是一个特殊的符号,这也是我们为什么要添加中括号的原因。"-"表示添加连字符到字符范围。"+"表示匹配前面的符号
一次或多次。
@ - 显而易见,我们在这里需要看到"@"字符。
[\w\.-]+ - 我们已经看见过一次了,如上所述。
\. - 在这里我们需要看到"."字符。
[a-zA-Z]+ - 这里我们可以用"\w"来代替。但是据我所知,在一级域名中(.com,.net,等等)没有使用数字和下划线的。
$ - "$"字符表示结束。
’例2
Function ValidateSSN(Expression)
Dim objRegExp
Set objRegExp = New RegExp
objRegExp.Pattern = "^\d{3}-\d{2}-\d{4}$"
ValidateSSN = objRegExp.Test(Expression)
End Function
例2是一个公用密钥合法性检查的例子。"\d{3}"语法表示检查是否为三位数。其它的就很simple了。
五、总结
正如你从例子中所看到的,使用规则公式可以简化你的代码。唯一难点就是学习样式语法。希望我的例子可以激发你使用这项功能强大的技术!