首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

14.7  基本操作实例

通过前面章节的学习,读者应该能总体把握正则表达式的使用方法。下面列举正则表达式的几个比较常用的经典实例,力求 使读者对正则表达式有更好的理解和掌握。

 14.7.1  验证日期

假设日期的有效形式类似于“20070801”或者“070801”,验证日期范围为1900年01月01日至2099年12月31日。相应的正则表达式如下所示:

— 验证日期中“年”部分1900-2099的表达式为((((19){1}|(20){1})\d{2})|\d{2});

— 验证日期中“月”部分01-12的表达式为0[1-9]|1[0-2];

— 验证日期中“日”部分01-31的表达式为[0-2]{1}\d{1}|3[0-1]{1}。

综上所述,验证日期的正则表达式为:

((((19){1}|(20){1})\d{2})|\d{2})(0[1-9]|1[0-2] )([0-2]{1}\d{1})|(3[0-1]{1})

程序代码如源程序14.11所示。

//源程序14.11

<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.0//EN"

"http://www.w3.org/TR/REC-html140/strict.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>Sample Page!</title>

<script language="JavaScript" type="text/javascript">

<!--

//检测输入的日期字符串格式

function testdate(obj)  

{  

  var str=obj.m_date.value;

  var msg="\n验证日期格式 :\n\n";

  msg+="原始日期字符串 :\n"+str+"\n";

  msg+="验证结果 :\n";

  //构造正则表达式进行判断

  var regex=/^((((19){1}|(20){1})\d{2})|\d{2})(0[1-9]|1[0-2])([0-2]{1}\d{1})| (3[0-1]{1})$/;

  if (!regex.exec(str))

  {

    msg+="目标日期格式不正确! ";

    alert(msg);

    obj.m_date.focus(); 

  }

  else

  {

    msg+="目标日期格式正确!";

    alert(msg);

    return true;

  }  

}

-->

</script>

</head>

<body>

<center>

<p>

  验证日期格式是否正确

</p>

<form onSubmit="return testdate(this);">     

  <input type="text" name="m_date">

  <input type="submit" value="确定">

</form>

</center>

</body>

</html>

程序运行后,在原始页面的文本框内输入正确日期格式的2008北京奥运会开幕日的字符串“20080808”或“080808”,然后单击“确定”按钮,弹出警告框如图14.19所示。

若输入格式不正确的日期字符串“20088080”或“088080”,单击“确定”按钮,弹出警告框如图14.20所示。

                

图14.19  日期格式正确时弹出警告框          图14.20  日期格式不正确时弹出警告框

 14.7.2  验证信用卡号

目前,电子商务在人们生活中占据非常重要的地位,旅游也日益成为一种时尚,在电子商务和旅游过程中,由于现金交易和携带的不便,导致信用卡的使用日益普遍。在互联网交互过程中,经常涉及验证客户端提交的信用卡号码格式是否正确的问题。

目前,在国际上使用最为广泛的信用卡主要有维萨卡(VISA)、万事达卡(MasterCard)和运通卡(American Express)等。要使用JavaScript脚本代码来验证客户提交的信用卡卡号格式是否正确,就必须了解各种信用卡卡号的组成规则。由于各种信用卡用卡号的组成规则有很大差异,很多读者不是很了解,表14.10列出了上述信用卡通用卡号的组成规则。

表14.10  信用卡卡号格式

信用卡类型

   

格式实例

卡号范围

维萨卡(VISA)

16

1234 5678 9012 3456

4000 0000 0000 0000

4999 9999 9999 9999

万事达卡(MasterCard)

16

1234 5678 9012 3456

5100 0000 0000 0000

5599 9999 9999 9999

运通卡(American Express)

15

1234 567890 12345

3400 0000000 00000

3499 9999999 99999

3700 0000000 00000

3799 9999999 99999

为了验证上面三种信用卡卡号,构造目标正则表达式如下所示:

/^((4\d{3})|(5[1-5]\d{2}))(-?|\040?)(\d{4}(-?|\040?)){3}|^(3[4,7]\d{2})(-?|\040?)\d{6}(-?|\040?)\d{5}$/

其中\040表示空格,接受的有效形式是“4000 1234 5678 9012”或者“4000-1234-5678 -9012”。程序代码如源程序14.12所示。

//源程序14.12

<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.0//EN"

"http://www.w3.org/TR/REC-html140/strict.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>Sample Page!</title>

<script language="JavaScript" type="text/javascript">

<!--

//检验文本框中信用卡卡号格式是否正确

function testCreditCartNum(obj)  

{  

  var str=obj.m_num.value;

  var msg="\n验证信用卡卡号格式 :\n\n";

  msg+="信用卡卡号 :\n"+str+"\n";

  msg+="验证结果 :\n";

  var regex= 

  /^((4\d{3})|(5[1-5]\d{2}))(-?|\040?)(\d{4}(-?|\040?)){3}|^(3[47]\d{2})(-?|\040?)\d{6}(-?|\040?)\d{5}/;  

  if (!regex.exec(str))

  {

    msg+="信用卡卡号格式不正确! ";

    alert(msg);

    obj. m_num.focus(); 

  }

  else

  {

    msg+="信用卡卡号格式正确! ";

    alert(msg);

    return true;

  }  

}

-->

</script>

</head>

<body>

<center>

<p>

  验证信用卡卡号格式是否正确

</p>

<form onSubmit="return testCreditCartNum(this);">     

  <input type="text" name="m_num">

  <input type="submit" value="确定">

</form>

</center>

</body>

</html>

程序运行后,在原始页面的文本框内输入正确格式的运通卡卡号“3412 123456 12345”,然后单击“确定”按钮,弹出警告框如图14.21所示。

若输入格式错误的信用卡卡号“5812 1234 1234 1234”,然后单击“确定”按钮,弹出警告框如图14.22所示。

                    

图14.21  信用卡卡号格式正确                  图14.22  信用卡卡号格式不正确

 14.7.3  验证电子邮件地址

在Web页面接收用户提交的电子邮件地址,并提交给服务器进行相关操作前,进行适当的格式验证显得比较重要。在第6.1节已介绍了使用indexOf()方法来验证电子邮件地址格式的方法,该方法效果较为明显,但代码显得很复杂。下面利用正则表达式来验证电子邮件地址格式是否合法。

正确格式的电子邮件地址如zangpu@gmail.com,其必须符合以下条件:

— 电子邮件地址中同时含有“@”和“.”字符;

— 字符“@”后必须有字符“.”,且中间至少间隔一个字符;

— 字符“@”不为第一个字符,“.”不为最后一个字符。

有关电子邮件地址各部分的含义,请读者自行查阅相关资料。根据上述条件,可构造验证电子邮件地址的正则表达式如下所示:

/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/

程序代码如源程序14.13所示。

//源程序14.13

<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.0//EN"

"http://www.w3.org/TR/REC-html140/strict.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>Sample Page!</title>

<script language="JavaScript" type="text/javascript">   

<!--

//检验文本框中电子邮件地址格式是否合法 

function testEmailAddress(obj)

{

  var email = obj.m_email.value

  var msg="\n验证电子邮件地址合法性 :\n\n";

  msg+="电子邮件地址 :\n"+"        "+email+"\n";

  msg+="返回验证结果 :\n";

  //构造正则表达式进行检验

var regex=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;  

  if (!regex.exec(email))

  {

    msg+="电子邮件地址格式不合法! \n"; 

    msg+="电子邮件地址格式 :\n";

    //提示用户输入正确的电子邮件地址

    msg+="1,电子邮件地址中同时含有'@'和'.'字符;\n";

    msg+="2,字符'@'后必须有字符'.',且中间至少间隔一个字符;\n";

    msg+="3,字符'@'不为第一个字符,'.'不为最后一个字符。\n";

    alert(msg);

    obj.m_email.focus(); 

  }

  else

  {

    msg+="电子邮件地址格式合法! \n";

    alert(msg);

    return true;

  }  

}

-->

</script> 

</head>

<body>

<center>

<p>验证电子邮件地址合法性</p>

<form onSubmit="return testEmailAddress(this);">     

  <input type="text" name="m_email">

  <input type="submit" value="确定">

</form>

</center>

</body>

</html>

程序运行后,在文本框中输入正确格式的电子邮件地址如“zangpu@gmail.com”,然后单击“确定”按钮,弹出警告框如图14.23所示。

当输入格式错误的电子邮件地址如“zangpu.gmail.com”时,由于缺少字符“@”,为不合法的电子邮件地址,单击“确定”按钮,弹出警告框如图14.24所示。

            

图14.23  输入格式正确的电子邮件地址           图14.24  输入格式不正确的电子邮件地址

由上述实例可以看出,使用正则表达式来验证表单中相关信息的方法呈现出简便、快捷的特点,可大大提高JavaScript脚本的编程效率。在实际应用中其难点在于构造符合要求的正则表达式,同时克服正则表达式本身结构比较晦涩难辨的缺点,下一节将列举实际应用中常见的正则表达式,方便读者查询后直接使用。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论