繁体中文
设为首页
加入收藏
当前位置:程序开发首页 >> Java >> 用正则表达式作校验

用正则表达式作校验

2008-04-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:正则表达式的校验功能比通常相象的要强得多。它可以简单地测试输入值是否为空,也可以校验输入的IP地址是否正确。微软公司对正则表达式的说明极其简单并含糊不清。本文将通过示例说明正则表达式的使用,介绍如何...
关键字:正则 表达式

正则表达式的校验功能比通常相象的要强得多。它可以简单地测试输入值是否为空,也可以校验输入的IP地址是否正确。微软公司对正则表达式的说明极其简单并含糊不清。本文将通过示例说明正则表达式的使用,介绍如何更换这些字符串函数。正则表达式是个很有用的工具!

我将通过二个示例来说明正则表达式的应用,可以用VBScript和JavaScript来编写相关代码。第一个示例是大家熟悉的正则表达式校验,第二个示例说明如何校验IP地址。

校验示例

本例说明如何简单地校验输入数据是否为空。

客户端JavaScript校验代码:

01:

02:

03: Validation Example

04:

17:

18:

19:

21:

22: What is you name?

23:

24:

25:

26:

27:

可以看到,用JavaScript编写正则表达式校验并不难。在第7行,用斜线(/)创建正则表达式对象。二个斜线之间就是正则表达式类型。"^"是字符串起始,"\s"表示空格(space)和跳格(tab),"*"是通配符,"$"是字符串结束。

第9行是正则表达式的检测方法,测试输入的字符串是否与正则表达相匹配。如果测试为真,就说明输入值为空。我把校验过程包装在一个函数里,可以将它存为包含文件,凡有需要输入校验的网页都可以用。

那么对客户端不支持JavaScript的浏览器、个人电子助理(PDA)、移动电话怎么办呢?可以用服务端ASP网页的VBScript来编写代码。

服务端VBScript校验代码:

01:

03:

04:

24:

25:

26: Validation Example

27:

28:

29:

30:

32: You must enter something into

the name field.

33:

34: Hello !

35:

36:

37:

38:

39: What is you name?

40:

41:

42:

43:

21:

二者之间没有太大不同。在第18行创建正则表达式对象,19行设置正则表达类型,然后进行比较判别。

匹配示例

现在举例说明更复杂的校验,如IP地址的测试。

客户端JavaScript匹配校验代码:

01:

02:

03: Match Example

04:

28:

29:

30:

32:

33: Enter an IP Address:

34:

35:

36:

37:

38:

第7行代码创建正则表达式对象。但这次表达式的类型不同。小括号()里的参数是为后面的子测试用的。"\d"表示数字匹配,"\d+"则要求至少匹配一个数字。在测试输入值匹配之后,用子测试确定每个节的数字都在0 - 255之间。子测试时用到全局对象RegExp,它在调用String.match方法时自动生成。

使用VBScript要多写些代码,但也能实现同样的功能。

服务端VBScript匹配校验代码:

01:

03:

04:<%

05:Dim ipAddress

06:Dim reIPAddressCheck

07:Dim formPost

08:Dim passedTest

09:Dim Matches

00:Dim num1

11:Dim num2

12:Dim num3

13:Dim num4

14:

15:if Request.Form.Item("submitButton") = "Enter" then

16: formPost = true

17:else

18: formPost = false

19:end if

20:

21:if formPost then

22: ipAddress = Request.Form.Item("ipAddress")

23: Set reSpaceCheck = new RegExp

24: reSpaceCheck.pattern = "^(\d+)\.(\d+)\.(\d+)\.(\d+)$"

25:

26: if reSpaceCheck.test(ipAddress) then

27: Set Matches = reSpaceCheck.Execute(ipAddress)

28: num1 = Matches.item(0).SubMatches.item(0)

29: num2 = Matches.item(0).SubMatches.item(1)

30: num3 = Matches.item(0).SubMatches.item(2)

31: num4 = Matches.item(0).SubMatches.item(3)

32: if num1 = 0 _

33: and num2 = 0 _

34: and num3 = 0 _

35: and num4 = 0 then

36: passedTest = true

37: end if

38: end if

39:end if

40:%>

41:

42:

43: Match Example

44:

45:

46:

47:

49: You entered as a valid IP Address.

50:

51: You must enter a valid IP Address.

52:

53:

54:

55:

56: Enter an IP Address:

57:

58:

59:

60:

61:

与JavaScript不同, VBScript没有match命令。所以用正则表达式的Execute方法来处理匹配测试。Execute返回结果中包含四个子数组,对应于每节数字的检测结果。然后检测该节数字是否在0 - 255范围内。检测无误,就得到正确的IP地址。

通过本文,希望有助于初步了解正则表达式的用法。可在微软站点下载有关脚本帮助文件。

Happy Programming!

JS中文帮助 Http://www.chinaok.net/down/jscript5.zip

VBS中文帮助 Http://www.chinaok.net/down/vbscript.zip

责任编辑:admin
相关文章