Script

本类阅读TOP10

·一个简单的javascript菜单
·网站流量统计代码
·可编辑的 HTML JavaScript 表格控件 DataGrid II
·JavaScript通用库(一)
·在网页中控制wmplayer播放器
·层遇到select框时
·TYPEING TEST ON LINE 在线打字测试 Free Software Javascript (aiiiq)
·javascript表单之间的数据传递!
·让网页自动穿上外套
·搜索gb2312汉字在网上的频率

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
用正则表达式作校验

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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

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

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

客户端JavaScript校验代码:
01:<html>
02:<head>
03: <title>Validation Example</title>
04: <script langauge="Javascript">
05:  // 如果输入值为空,函数返回false
06:  function checkEnteredSomething (stringToCheck, fieldName) {
07:   var reSpaceCheck = /^\s*$/;  //创建正则表达式对象
08:
09:   if (reSpaceCheck.test(stringToCheck)) {
10:    alert('You must enter something into the ' + fieldName + ' field.');
11:    return false; //输入出错
12:   }
13:   
14:   return true; //输入正确
15:  }
16: </script>
17:</head>
18:<body>
19: <form name="testForm" id="testForm" method="post" action=""
20:   onsubmit="return(checkEnteredSomething(
   window.document.testForm.username.value, 'name'));">
21: <center>
22: What is you name? <input type="text" name="username" id="username" value="" /><br />
23: <input type="submit" name="submitButton" id="submitButton" value="Enter" />
24: </center>
25: </form>
26:</body>
27:</html>

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

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

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

服务端VBScript校验代码:
01:<%@ LANGUAGE = VBScript
02: EnableSessionState = False%>
03:<!-- test.asp File -->
04:<%
05:Dim username
06:Dim reSpaceCheck
07:Dim formPost
08:Dim failedTest
09:
00:if Request.Form.Item("submitButton") = "Enter" then
11: formPost = true
12:else
13: formPost = false
14:end if
15:
16:if formPost then
17: username = Request.Form.Item("username")
18: Set reSpaceCheck = new RegExp
19: reSpaceCheck.pattern = "^\s*$"
20:
21: failedTest = reSpaceCheck.test(username)
22:end if
23:%>
24:<html>
25:<head>
26: <title>Validation Example</title>
27:</head>
28:<body>
29: <center>
30: <%if formPost then
31:  if failedTest then%>
32:   <b><font color="red">You must enter something into
    the name field.</font></b>
33:  <%else%>
34:   <b>Hello <%=username%>!</b>
35:  <%end if%>
36:  <br />
37: <%end if%>
38: <form name="testForm" id="testForm" method="post" action="test.asp">
39: What is you name? <input type="text" name="username"
    id="username" value="" /><br />
40: <input type="submit" name="submitButton" id="submitButton"
    value="Enter" />
41: </form>
42: </center>
43:</body>
21:</html>

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


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

客户端JavaScript匹配校验代码:
01:<html>
02:<head>
03: <title>Match Example</title>
04: <script langauge="Javascript">
05:  // 如果IP地址非法,返回false
06:  function checkIPAddress (ipAddressString) {
07:   var reSpaceCheck = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
08:   var passedTest = false;
09:   
10:   if (reSpaceCheck.test(ipAddressString)) {
11:    ipAddressString.match(reSpaceCheck);
12:    if (RegExp.$1 <= 255 && RegExp.$1 >= 0
13:      && RegExp.$2 <= 255 && RegExp.$2 >= 0
14:      && RegExp.$3 <= 255 && RegExp.$3 >= 0
15:      && RegExp.$4 <= 255 && RegExp.$4 >= 0) {
16:     passedTest = true;
17:    }
18:   }
19:   
20:   if (!passedTest) {
21:    alert('You must enter a valid IP Address.');
22:    return false;
23:   }
24:   
25:   return true;
26:  }
27: </script>
28:</head>
29:<body>
30: <form name="testForm" id="testForm" method="post" action=""
31:  onsubmit="return(checkIPAddress(
    window.document.testForm.ipAddress.value));">
32: <center>
33: Enter an IP Address: <input type="text" name="ipAddress"
    id="ipAddress" value="" /><br />
34: <input type="submit" name="submitButton" id="submitButton"
    value="Enter" />
35: </center>
36: </form>
37:</body>
38:</html>

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

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

服务端VBScript匹配校验代码:
01:<%@ LANGUAGE = VBScript
02: EnableSessionState = False%>
03:<!-- test2.asp File -->
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 <= 255 and num1 >= 0 _
33:    and num2 <= 255 and num2 >= 0 _
34:    and num3 <= 255 and num3 >= 0 _
35:    and num4 <= 255 and num4 >= 0 then
36:   passedTest = true
37:  end if
38: end if
39:end if
40:%>
41:<html>
42:<head>
43: <title>Match Example</title>
44:</head>
45:<body>
46: <center>
47: <%if formPost then
48:  if passedTest then%>
49:   <b>You entered <%=ipAddress%> as a valid IP Address.</b>
50:  <%else%>
51:   <b><font color="red">You must enter a valid IP Address.</font></b>
52:  <%end if%>
53:  <br />
54: <%end if%>
55: <form name="testForm" id="testForm" method="post" action="test2.asp">
56: Enter an IP Address: <input type="text" name="ipAddress" id="ipAddress"
    value="" /><br />
57: <input type="submit" name="submitButton" id="submitButton" value="Enter" />
58: </form>
59: </center>
60:</body>
61:</html>

与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

 




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有