用正则表达式作校验[1]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 chinaok 的 blog

正则表达式的校验功能比通常相象的要强得多。它可以简单地测试输入值是否为空,也可以校验输入的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:  }

本文关键:正则表达式,验证
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top