Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4318428
  • 博文数量: 79
  • 博客积分: 3046
  • 博客等级: 中校
  • 技术积分: 723
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-18 21:46
文章分类

全部博文(79)

文章存档

2010年(5)

2009年(2)

2008年(6)

2007年(66)

我的朋友

分类:

2007-05-18 09:36:40

asp 表单验证 常用的函数

一般表单验证都会有以下几项,而且还会组合起来的使用,所以分开来说就方便具体的操作,或许明天我就要对它进行增加、删除或修改了,做网页是一个简单长期的积累过程,对自己的知识不定期debug 和 update 也是理所当然的了.所以任何都要"预留退路"至少我是这样认为的.......

这里对分类不是分得太好,先将就用着吧

1.内容是否为空

(在我们的讨论的范围内,仅对表单的反馈的字符串进行判断)其实这个判断真的是最简单的,如

if request.form(text1) ="" then
statement...
end if

这样就判断表单项名为text1的内容是否为空(存在,但没有任何值),也可以用

isempty(),如:isempty(request.form("text1"))

如果在程序开头就声明了"option explicit",那么 request.form(text1) ="" 与 isempty(request.form("text1")) 的判断得到的结果是一致的(并且在声明了"option explicit"后对于用"null" 和isnull() 对字符串是否空的判断用处其实也就不大了, 我试过只有在判断前对变量进行赋值为"null" 结果才是真,其它情况要不报错,要不结果为假.对于empty 跟 null 我也说不清楚,要知道就百度或者谷歌一下咯)

Brief:

1.if request.form(text1)="" then
2.if request.form("text1") = empty then
3.if isempty(request.form("text1")) then

2.长度限制

长度限制的核心就是统计字符串的长度,len(str)函数会对str的长度进行返回,之后用判断语句判断范围,例如判断表单中text1 的长度是否在(2,10)范围内:

if len(request.form("text1"))>=2 and len(request.form("text1"))<=10 then
statement.....
end if

具体情况对判断语句使用 and or not,就是个人思路的问题了...

Brief:

int len(str) :返回str字符串的长度,空字符串返回0

3.是否为数字

asp 提供isnumberic(expression)函数 判断表达式是否为数字.还是举例比较容易理解吧.
Dim MyVar
MyVar = 53 '赋值。
IsNumeric(MyVar) ' 返回 True。

MyVar = "459.95" ' 赋值。
IsNumeric(MyVar) ' 返回True。

MyVar = "45 Help" ' 赋值。
IsNumeric(MyVar) ' 返回 False。

现在在数字的基础上,对数值进行取整
int int(number)函数,取number的整数部分,略去少数部分.基本上这个函数不用去考虑数值的范围.超过15位的数值就会以科学计数法表示,下面我再说说另一个很相似的函数int cint(number):进行四舍五入取最接近它的偶数的整数部分,并且范围在-32,768到32,767之内,否则数值溢出就报错.

Brief:

boolean isnumberic(expression):返回 Boolean 值指明表达式的值是否为数字。
long int(number):取number 的整数部分.
int cint(number):对number进行四舍五入取最接近它的偶数的整数部分,范围在-32,768到32,767之内.

4.内容里是否含有某个字符或字符串

asp 提供的函数是:instr([start, ]string1, string2[, compare]),返回指定一字符串在另一字符串中最先出现的位置。在字符串string1中,从start开始找string2,省略start时从string1头开始找。找不到时,函数值为0。
参数说明:
start:可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果start包含null,将发生错误。
string1:必要参数。接受搜索的字符串表达式。
string2:必要参数。被搜索的字符串表达式。
Compare:可选参数。指定字符串比较。如果 compare 是 Null,将发生错误。缺省为0. ?compare 参数设置为: -1
使用Option Compare 语句设置执行一个比较。
vbBinaryCompare

0
执行一个二进制比较。(区分大小写)
vbTextCompare
1
执行一个按照原文的比较。(不区分大小写)
vbDatabaseCompare
2
仅适用于Microsoft Access,执行一个基于数据库中信息的比较。

下面举些例子

如果 InStr返回
string1 为零长度 0
string1 为 Null Null
string2 为零长 Start
string2 为 Null Null
string2 找不到 0
在string1中找到string2找到的位置(start < string2) 0

注意:这个并不是instr函数的原型,我把最后一个可选参数略去了,想了解详细明白的再上网找找

Brief:

array split(expression,delimter) :以delimter为分隔符,将expression分隔成多个字符串,将这些字符串以一个一维数组的内容的形式,返回这个数组

5.对内容进行分割

Split(expression, delimiter)
参数
expression:必选项。字符串表达式,包含子字符串和分隔符。如果 expression 为零长度字符串,Split 返回空数组,即不包含元素和数据的数组。
delimiter:可选项。用于标识子字符串界限的字符。如果省略,使用空格 ("") 作为分隔符。如果 delimiter 为零长度字符串,则返回包含整个 expression 字符串的单元素数组。
注意:这个也不是split的原型函数.
例子:
dim myArr
dim str="123|258|146|222|259|014"
myArr=Split(str,"|")
得出myArr 的数组则是:myArr("123","258","146","222","259","014")

Brief:

array split(expression,delimter) :以delimter为分隔符,将expression分隔成多个字符串,将这些字符串以一个一维数组的内容的形式,返回这个数组

6.判断输入的日期字符串的有效性

isdate 函数
返回 boolean 值指明某表达式是否可以转换为日期。
isdate(expression)
expression 参数可以是任意可被识别为日期和时间的日期表达式或字符串表达式。如果表达式是日期或可合法地转化为有效日期,则 isdate 函数返回 true;否则函数返回 false。在 microsoft windows 操作系统中,有效的日期范围公元 100 年 1 月 1 日到公元 9999 年 12 月 31 日;合法的日期范围随操作系统不同而不同。而日期的格式排序可以是: "年月日"和"月日年"
其实其用处就验证一个符合日期的形式字符串所代表的日期是否是一个有效的日期
下面举些例子:
dim mydate, yourdate, nodate, mydate = "october 19, 1962" '注意含英文月份日期写法,(月 日 年) 返回 true yourdate = #10/19/62# '数字形式的日期注意前后不是",而是#,当然用""也是可以通过的,但不推荐,(月 日 年) 返回 true nodate = #2/30/2000# '谁都知道2月是没有30号的拉 返回 false

IsDate 函数用于判断 date 是否可以被转换为日期或时间。CDate 识别日期文字和时间文字,以及一些在可接受的日期范围内的数字。在将数字转换为日期时,数字的整数部分被转换为日期,分数部分被转换为从午夜开始计算的时间。
CDate 根据系统的区域设置识别日期格式。如果数据的格式不能被日期设置识别,则不能判断年、月、日的正确顺序。另外,如果长日期格式包含表示星期几的字符串,则不能被识别。
下面的示例使用 CDate 函数将字符串转换成日期类型。一般不推荐使用硬件译码日期和时间作为字符串(下面的例子已体现)。而使用时间和日期文字 (如 #10/19/1962#, #4:45:23 PM#)。
MyDate = "October 19, 1962" ' 定义日期。
MyShortDate = CDate(MyDate) ' 转换为日期数据类型。
MyTime = "4:35:47 PM" ' 定义时间。
MyShortTime = CDate(MyTime) ' 转换为日期数据类型。

其它在日期还会用到的函数有DateAdd,datediff,这里先不说了.

Brief:

isdate(expression) :用于判断 expression 是否可以被转换为日期或时间


7.替换,过滤字符

replace()函数:在字串中查找,替代指定的字串.
replace(expression,find,replacewith[,start[,count[,compare]]])
expression
必选项。字符串表达式包含要替代的子字符串。
Find
必选项。被搜索的子字符串。
Replacewith
必选项。用于替换的子字符串。
Start
可选项。expression 中开始搜索子字符串的位置。如果省略,默认值为1(即从第一个字符开始查找.若指定3则从第三个字符开始查找,如此类推)。在和count 关联时必须用
count
可选项。执行子字符串替换的数目。如果省略,默认值为 -1,表示进行所有可能的替换(若指定1为则只替换首个出现的字符串,2为替代前两个出现的字符串...)。在和 start 关联时必须用。
Compare
可选项。指示在计算子字符串时使用的比较类型的数值。如果省略,缺省值为 0 ,表示字符串的比较区分大小写,1 刚不区分.
举例:
dim mystring
mystring=”Welcome SoMeoNe,your name is SomeOne.”
mystring=replace(mystring,”someone”,”dr.Remind”,1,-1,1)
结果则为: mystring = "Wellcome dr.Remind,your name is dr.Remind"

Brief:

replace(expression,find,replacewith),在expression中把replacewith替换为find,返回这个expression
阅读(1888) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~