
1.3 JavaScript
JavaScript同CSS一样,不需要使用复杂的工具来编写,可以使用文本编辑器或者Web开发工具来编写。
1.3.1 在网页中添加JavaScript的方法
1. 嵌入使用
在网页代码中任何位置都可嵌入JavaScript代码,但建议嵌入到head标记中。示例代码如下:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JavaScript嵌入学习</title> <script type="text/javascript"> alert("第一次看到警告框很兴奋!"); </script> </head> <body> 好好学习 JavaScript知识。 </body> </html>
2. 引入使用
当多个页面使用相同的JavaScript代码时,可以将共用的代码保存在以.js为扩展名的文件中,然后在页面中使用src属性引入外部js文件。示例代码如下:
myFirst.js alert("被引入到页面中!"); 引入外部 js文件学习.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>引入外部 js文件</title> <script type="text/javascript" src="myFirst.js" charset="GBK"> </script> </head> <body> 好好学习 JavaScript知识。 </body> </html>
1.3.2 JavaScript基本语法
1. 变量
使用var可以声明任意类型的变量,如:
var firstNumber =10;
2. 类型转换
JavaScript是弱类型语言,变量的类型对应于其值的类型。可以对不同类型的变量执行运算,解释器强制转换数据类型,然后进行处理。例如:数值与字符串相加,将数值强制转换为字符串;布尔值与字符串相加,将布尔值强制转换为字符串;数值与布尔值相加,将布尔值强制转换为数值。
字符串到数值的转换包括parseInt(s)将字符串转换为整数,parseFloat(s)将字符串转换为浮点数,Number(s)将字符串转换为数字。parseInt和parseFloat方法只对string类型有效,且需要是数字开头的字符串。
3. 运算符
1)赋值运算符
赋值运算符的运算规则及说明如表1.3所示。
表1.3 赋值运算符

2)数学运算符
数学运算符的运算规则及说明如表1.4所示。
表1.4 数学运算符

3)逻辑运算符
逻辑运算符的运算规则及说明如表1.5所示。
表1.5 逻辑运算符

4)typeof运算符
对变量或值调用typeof运算符将返回对应的值,typeof运算符的运算规则及说明如表1.6所示。
表1.6 typeof运算符

4. 注释
为了程序的可读性,以及便于日后代码的修改和维护,可以在JavaScript程序里为代码写注释。在JavaScript程序里,用两个斜杠“//”表示单行注释。多行注释用“/∗”表示开始,“∗/”表示结束。注释示例代码如下:
aGoodIdea ="Comment your code thoroughly."; //这是单行注释 /∗ 这是多行注释 行一。 这是多行注释 行二。 ∗/
5. 变量命名规则
以字母、下画线(_)或美元符号($)开头;余下的字符可以是下画线、美元符号或任何的字母、数字;不能有空格,大小写敏感;不能使用JavaScript中的关键字或保留字命名。
6. 部分保留字
部分保留字如下:break、delete、function、return、typeof、case、do、if、switch、var、catch、else、in、this、void、continue、false、instanceof、throw、while、finally、new、true、with、default、for、null、try。
【例1-6】编写网页example1_6.html,在网页中嵌入使用JavaScript,JavaScript程序的具体要求如下:
• 声明变量firstNumber,并将“I am a String”赋值给该变量;
• 声明变量secondNumber,并将300赋值给该变量;
• 声明变量thirdNumber,并将firstNumber+secondNumber赋值给该变量;
• 使用alert弹出变量thirdNumber的值;
• 使用typeof运算符判断变量firstNumber、secondNumber以及thirdNumber的值的类型,并使用alert分别弹出typeof的返回结果。
例1-6页面文件example1_6.html的代码如下:
<! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>example1_6.html</title> <script type="text/javascript"> var firstNumber ="I am a String"; var secondNumber =300; var thirdNumber =firstNumber +secondNumber; alert(thirdNumber); alert("firstNumber的值类型:" +typeof(firstNumber)); alert("secondNumber的值类型:" +typeof(secondNumber)); alert("thirdNumber的值类型:" +typeof(thirdNumber)); </script> </head> <body> </body> </html>
1.3.3 流程控制与函数
1. 流程控制语句
1)if条件语句
if(表达式){ 语句 }
或
if(表达式)){ 语句 }else{ 语句 }
2)switch条件语句
switch(表达式){ case case1: 语句 break; case case2: 语句 break; … default: default语句 }
3)for循环语句
for(表达式 1;表达式 2;表达式 3){ 语句 }
4)while循环语句
while(表达式){ 语句 }
5)do-while循环语句
do{ 语句 }while(表达式)
6)break/continue语句
break语句让执行语句从循环语句或其他程序块中跳出。continue语句让执行语句跳过本次循环的剩余语句进入下一次循环。
2. 函数
将完成某个功能的一组语句常写成一个函数,函数的定义格式如下:
function 函数名([参数,参数]){ 函数体 } function是关键字,函数没有类型,参数也没有类型。例如: function gogo(obj){ document.write("函数没有类型,参数也没有类型"); }
3. arguments对象
函数可以接收任意个数的参数,通过arguments对象来访问。示例代码如下:
function say(){ if(arguments[1] ! ="你好"){ alert(arguments[0]); }else{ alert(arguments[1]); } alert(arguments.length); //返回参数的个数 }
调用函数如下:
say("How are you? ", "你好");
4. 系统函数
JavaScript提供了与任何对象无关的系统函数,使用这些函数不需要创建任何对象就可以直接使用。
1)eval(字符串表达式)
该函数的功能是返回字符串表达式的值,例如:
var test =eval("2+3"); //test的值为 5
2)parseInt(字符串)
该函数的功能是将以数字开头的字符串转换为整数,例如:
var test =parseInt("200.5abc"); //test的值为 200
3)parseFloat(字符串)
该函数的功能是将以数字开头的字符串转换为浮点数,例如:
var test =parseFloat("200.5abc"); //test的值为 200.5
4)Number(字符串)
该函数的功能是将数字字符串转换为数字,字符串中有非数字字符则返回NaN。例如:
var test =Number("200.5abc"); //test的值为 NaN
【例1-7】编写网页example1_7.html,在网页中嵌入使用JavaScript程序打印出九九乘法表,网页运行效果图1.17所示。

图1.17 九九乘法表
例1-7页面文件example1_7.html的代码如下:
<! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>example1_7.html</title> <script type="text/javascript"> for(var i =1; i <=9; i++){ for(var j =1; j <=i; j++){ document.write(i +"∗" +j +"=" +i∗j +" "); //在页面输出 } document.write("<br>"); } </script> </head> <body> </body> </html>
5. 函数调用
1)在链接中调用函数
用户单击链接时,即调用函数,格式如下:
<a href="javascript:函数">…</a>
在链接中调用函数的示例代码如下:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>链接调用函数</title> <script type="text/javascript"> function gogo(){ alert("被链接调用的函数"); } </script> </head> <body> <a href="javascript:gogo()">链接调用函数</a> </body> </html>
2)由事件触发调用函数
触发事件调用函数,格式如下:
事件="函数"
触发事件调用函数的示例代码如下:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>事件触发调用函数</title> <script type="text/javascript"> function gogo(param){ alert(param); } </script> </head> <body> <form action=""> <input type="button" value="单击我" onclick="gogo('O(∩_∩)O哈哈~')"/> </form> </body> </html>
1.3.4 JavaScript对象
一个JavaScript对象中可包含若干属性和方法。属性是描述对象的状态,对象用“.”运算符访问属性。方法是描述对象的行为动作,对象用“.”运算符调用方法。
1. 对象创建
使用new关键字来创建对象,如:
var oStringObject =new String();
如果构造函数无参数,则不必加括号。
2. JavaScript内部对象
1)数组(Array)对象
• 创建数组
数组创建的示例代码如下:
var myArray =new Array(); //新建一个长度为 0的数组 var myArray =new Array(100); //新建一个长度为 100的数组 var myArray =new Array(1,2,3); //新建一个指定长度的数组,并赋初值
数组长度不固定,赋值即可改变长度。数组的主要属性length返回数组长度。
• 数组的常用方法
reverse方法:将JavaScript数组对象内容反转。
concat方法:将两个或更多数组组合在一起,如:
var newArray =tmpArray.concat(tmpArray);
join方法:返回一个将数组所有元素用指定符号连在一起的字符串,如:
var newString =tmpArray.join(".");
pop()方法:移除数组中的最后一个元素并返回该元素。
shift()方法:移除数组中的第一个元素并返回该元素。
slice方法:返回数组的一部分,如:
var newArray =tmpArray.slice(1,3);
• 数组的使用
数组的使用,示例代码如下:
<script type="text/javascript"> var myArray =new Array(); for(var i =0; i <5; i++){ myArray[i] =i; } for(var j =0; j <myArray.length; j++){ alert(myArray[j]); } </script>
2)日期(Date)对象
Date对象可以用来表示任意的日期和时间。
• 创建Date对象
必须使用new运算符创建一个Date对象。示例代码如下:
var date =new Date("July 8,2012"); //2012年 7月 8日 var date =new Date(2012,7,8); //2012年 8月 8日 var date =new Date("2012/7/8") ; //2012年 7月 8日 var date=new Date(Milliseconds); //自1970年1月1日以来的毫秒数创建的日期对象 var date =new Date(); //当前系统的时间对象
• 获取日期的时间方法
getYear():返回年数。
getMonth():返回当月号数(比实际值小1)。
getDate():返回当日号数。
getDay():返回星期几(0表示周日)。
getHours():返回小时数。
getMinutes():返回分钟数。
getSeconds():返回秒数。
getTime():返回毫秒数。
• 设置日期和时间的方法
setYear():设置年数。
setMonth():设置当月号数(set6表示7月)。
setDate():设置当日号数。
setHours():设置小时数。
setMinutes():设置分钟数。
setSeconds():设置秒数。
setTime():设置毫秒数。
• Date对象的使用
Date对象的使用,示例代码如下:
<script type="text/javascript"> var date =new Date("2050/12/25"); document.write("2050的圣诞节是星期"+date.getDay()+"<br>"); var datenow =new Date(); //得到当前日期对象 var mills =date -datenow; //两个 Date对象相减得到两个日期的时间间隔(单位是毫秒) document.write("2050的圣诞节距离现在还有"+mills+"毫秒<br>"); </script>
3)String对象
• 创建String对象
字符串对象的创建,示例代码如下:
var firstString ="This is a string"; var secondString =new String("This is a string");
String对象的主要属性length返回字符串的长度。
• String对象的常用方法
charAt(i):返回指定索引位置处的字符,索引从0开始。
concat(str):连接字符串。
indexOf(str):返回String对象内第一次出现子字符串的字符位置(从左到右查找)。
lastIndexOf(str):返回String对象中子字符串最后出现的位置。
replace(str1,str2):返回将str1替换为str2后的字符串。
split(separator, limit):将字符串以separator作为分隔符切割成多个子字符串,并将它们作为一个数组返回;如果有limit参数则返回数组的limit个元素。
substring(start, end):返回一个指定位置之间的子字符串,不包括end。
toLowerCase():返回一个字符串,字符串中的字母被转换为小写字母。
toUpperCase():返回一个字符串,字符串中的字母被转换为大写字母。
• String对象的使用
String对象的使用,示例代码如下:
<script type="text/javascript"> var firstString ="This is a string"; for(var i =0; i <firstString.length; i++){ alert(firstString.charAt(i)); } </script>
4)Math对象
Math对象是个全局对象,使用时不需要创建。
• Math对象的属性
LN10:10的自然对数。
LN2:2的对数。
PI:圆周率。
SQRT1_2:1/2的平方根。
SQRT2:2的平方根。
• Math对象的常用方法
abs(x):返回x的绝对值。
ceil(x):返回大于等于x的最小整数。
floor(x):返回小于等于x的最大整数。
round(x):舍入到最近整数。
sqrt(x):返回x的平方根。
random():返回0~1的随机数。
• Math对象的使用
Math对象的使用,示例代码如下:
<script type="text/javascript"> alert(Math.SQRT2); alert(Math.random()); </script>
【例1-8】编写网页example1_8.html,在网页中定义一个JavaScript函数,功能是去除字符串开头及末尾的空格,并使用超链接来调用该函数。
例1-8页面文件example1_8.html的代码如下:
<! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>example1_8.html</title> <script type="text/javascript"> function print99(x){ while((x.length>0) && (x.charAt(0) ==' ')) x =x.substring(1, x.length); while(x.length>0&&(x.charAt(x.length-1) ==' ')) x =x.substring(0, x.length-1); alert("Kill=" +x +"==") return x; } </script> </head> <body> <a href="javascript:print99(' abc def ')">单击我啊!</a> </body> </html>
1.3.5 JavaScript对象模型
1. 浏览器对象模型
浏览器对象是提供独立于内容而与浏览器窗口进行交互的对象。浏览器对象模型如图1.18所示。

图1.18 浏览器对象模型
2. 窗口(window)对象
1)打开新窗口
使用open()方法可打开一个新窗口,示例代码如下:
var winObj=open("target.html", "target_1", "width=500, height=300, scrollbars=no");
open方法有3个参数:第一个代表要载入新窗口页面的URL'第二个代表新窗口的名称;第三个代表新窗口的属性,多个属性间用逗号隔开。
2)对话框(与用户交互)方法
• alert()
该方法的功能是弹出一个提示框。示例代码如下:
<script type="text/javascript"> alert("请单击"确定"按钮!"); </script>
运行效果如图1.19所示。

图1.19 具有“确定”按钮的对话框
• prompt(message, defaultText)
该方法的功能是弹出可以输入信息的文本框,第一个参数代表用户输入信息的提示,第二个参数代表文本框的默认值。示例代码如下:
<script type="text/javascript"> prompt("What's your name? ", "chenheng"); </script>
运行效果如图1.20所示。

图1.20 用户输入对话框
• confirm(message)
该方法的功能是弹出对话框,提示确认信息。示例代码如下:
<script type="text/javascript"> if(confirm("真的删除吗?")){ //单击"确定"按钮后的操作 }else{ //单击"取消"按钮后的操作 } </script>
运行效果如图1.21所示。

图1.21 确认对话框
3. history对象
history对象记录着浏览器所浏览过的每一个页面,这些页面组成了一个历史记录列表。它有以下3个主要方法。
forward():将历史记录向前移动一个页面。
back():将历史记录向后移动一个页面,在网页中经常使用该方法提供一个“返回”的功能。
go():转向历史记录中指定的地址,使用此方法需要一个参数,参数可以是正负整数或字符串。如果参数是字符串,那么浏览器就会搜索列表,找到最接近当前页面位置且URL地址中含有此字符串的页面,然后转到该页面。
history对象的使用,示例代码如下:
history.go(-3); //向后返回三个访问过的页面 histroy.go(3); //向前返回三个访问过的页面 history.back(); //与 history.go(-1);功能相同 history.forward(); //与 history.go(1);功能相同
4. location对象
window对象的location属性可以直接改变URL地址:
window.location="http://www.baidu.com";
或
location="http://www.baidu.com";
还可以使用location对象的href属性或replace(URL)方法改变URL地址:
location.href="http://www.baidu.com";
或
location.replace("http://www.baidu.com");
可以使用location对象的href属性清空页面:
location.href ="about:blank"; //清空页面
5. document对象
1)forms集合
在同一个页面上有多个表单,通过document.forms[]数组获得这些表单对象要比使用表单名称方便得多。
2)getElementById(id)方法
该方法的功能是获得指定id值的表单控件对象。
3)getElementsByName(name)方法
该方法的功能是获得指定name值的表单控件对象,返回的是对象数组。
4)获取表单对象的方法
获取表单对象的方法如下:
document.forms[0]; //通过 forms对象的索引 document.forms["myForm"]; //通过 forms对象和表单名称 document.myForm; //通过表单名称
5)document对象的使用
document对象的使用,示例代码如下:
<html> <head> <title>The Document Object</title> <script type="text/javascript"> function testMethod() { //1.通过表单获取控件 var name_1 =document.forms[0].nameTest; alert("name_1=" +name_1.value); var name_2 =document.forms["myForm"].nameTest; alert("name_2=" +name_2.value); var name_3 =document.myForm.nameTest; alert("name_3=" +name_3.value); var name_4 =document.myForm.elements["nameTest"]; alert("name_4=" +name_4.value); //2.通过 name获取控件 var name_5 =document.getElementsByName("nameTest"); alert("name_5[0]=" +name_5[0].value); //3.通过 id获取控件 var id_1 =document.getElementById("idTest"); alert("id_1=" +id_1.value); } </script> </head> <body> <form name="myForm"> 通过name获取:<input type="text"name="nameTest"value="firstTextValue"> <br> <br>通过id获取:<input type="text"id="idTest"value="secondTextValue"> <br><input type="button" value="Click Me" onclick="testMethod()"> </form> </body> </html>
1.3.6 操作HTML
1. 事件处理
通常将鼠标或热键的动作称为事件。由鼠标或热键引发的一连串程序的动作,称为事件驱动。对事件进行处理的程序或函数称为事件处理程序。
1)窗口或页面的事件处理
窗口或页面的事件处理如表1.7所示。
表1.7 窗口或页面的事件处理

2)键盘或鼠标的事件处理
键盘或鼠标的事件处理如表1.8所示。
表1.8 键盘或鼠标的事件处理

3)表单元素的事件处理
表单元素的事件处理如表1.9所示。
表1.9 表单元素的事件处理

4)事件处理模型
在JavaScript中对事件的处理程序通常由函数完成,事件=“函数名”,如:
<html> <head> <title>The Document Object</title> <script type="text/javascript"> function testMethod() { alert("事件处理模型"); } </script> </head> <body> <form name="myForm"> <input type="button" value="Click Me" onclick="testMethod()" > </form> </body> </html>
2. 表单元素
1)表单元素的通用属性与方法
form属性:获取该表单控件所属的表单对象。
name属性:获取或设置表单控件的名称。
type属性:获取表单控件的类型。
value属性:获取和设置表单控件的值。
focus方法:让表单控件对象获得焦点。
blur方法:让表单控件对象失去焦点。
表单元素的通用属性及方法的示例代码如下:
<html> <head> <title>form</title> <script type="text/javascript"> //显示属性 function test() { var text_name =document.myForm.text_name; alert("text_name.form=" +text_name.form.name +"\ntext_name.name=" +text_name.name +"\ntext_name.type=" +text_name.type +"\ntext_name.value=" +text_name.value +"\ntext_name.defaultValue=" +text_name.defaultValue); } //获得焦点 function do_focus() { document.myForm.text_name.focus(); } //失去焦点 function do_blur() { document.myForm.text_name.blur(); } </script> </head> <body> <form name="myForm"> <input type="text" name="text_name" value="textValue"><br> <input type="button"name="button_1"value="显示属性"onclick="test()"><br> <input type="button" name="button_2" value="获得焦点" onclick="do_ focus()"><br> <input type="button"name="button_3"value="失去焦点"onclick="do_blur()"> </form> </body> </html>
2)文本框
value属性:获得文本框的值,值是字符串类型。
defaultValue属性:获得文本框的默认值,值是字符串类型。
readonly属性:只读,文本框中的内容不能修改。
focus方法:获得焦点,即获得鼠标光标。
blur方法:失去焦点。
select方法:选中文本框内容,突出显示输入区域。
文本框的示例代码如下:
<html> <head> <title>文本框求和</title> <script type="text/javascript"> function add(){ var sum=0; var text_1Value=document.forms[0].text_1.value; var text_2Value=document.forms[0].text_2.value; sum=Number(text_1Value)+Number(text_2Value); document.forms[0].text_3.value=sum; } </script> </head> <body> <form name="form1" method="post" action=""> <input type="text" name="text_1" value=""><br> <input type="text" name="text_2" value=""><br> <input type="text" name="text_3" value=""><br> <input type="button" value="求和" onclick="add()"> </form> </body> </html>
3)复选框
checked属性:复选框是否被选中,选中为true,未选中为false。
value属性:设置或获取复选框的值。
复选框的示例代码如下:
<html> <head> <title>复选框反选</title> <script type="text/javascript"> function unSelect() { var n =document.forms[0].check.length; //得到复选框的个数 for ( var i =0; i <n; i++) { if (document.forms[0].check[i].checked) { document.forms[0].check[i].checked =false; } else { document.forms[0].check[i].checked =true; } } } </script> </head> <body> <form action=""> <input type="checkbox" name="check" value="0" />aaa<br><input type="checkbox" name="check" value="1" />bbb<br><input type="checkbox" name="check" value="2" />ccc<br><input type="checkbox" name="check" value="3" />ddd<br><input type="checkbox" name="check" value="4" />eee<br><input type="checkbox" name="check" value="5" />fff<br><input type="button" value="反选" onclick="unSelect()"> </form> </body> </html>
4)单选按钮
checked属性:单选按钮是否被选中,选中为true,未选中为false。
value属性:设置或获取单选按钮的值。
单选按钮的示例代码如下:
<html> <head> <title>弹出单选按钮的值</title> <script type="text/javascript"> function gg() { var n =document.forms[0].sex.length; for ( var i =0; i <n; i++) { if (document.forms[0].sex[i].checked) { alert(document.forms[0].sex[i].value); } } } </script> </head> <body> <form action=""> <input type="radio" name="sex" value="male" onclick="gg()" />男 <input type="radio" name="sex" value="female" onclick="gg()" />女 </form> </body> </html>
5)下拉列表
length属性:选项个数。
selectedIndex属性:当前被选中选项的索引。
options属性:所有的选项组成一个数组,options表示整个选项数组,第一个选项即为options[0],第二个即为options[1],其他以此类推。
option的value属性:<option>标记中value所指定的值。
option的text属性:显示于界面中的文本,即<option>…</option>之间的部分。增加选项:每个选项都是一个option对象,可以创建option对象,然后添加到select的末尾。如:
select.options[select.length]=new Option(text, value);
下拉列表的示例代码如下:
<html> <head> <title>下拉列表的应用</title> <script type="text/javascript"> function gg() { var opObject =document.forms[0].elements["cities"]; //获得列表对象 for ( var i =0; i <opObject.options.length; i++) { //使用 options属性 if (opObject.options[i].selected) { //找到被选中的选项 alert(opObject.options[i].value); //弹出选中选项的值 alert(opObject.options[i].text); //弹出选中选项的文本 } } //为列表新增选项 opObject.options[opObject.length] =new Option("新增" +1, "new" +1); } </script> </head> <body> <form action=""> <select name="cities" onchange="gg()"> <option value="daLian">大连</option> <option value="beiJing">北京</option> <option value="shangHai">上海</option> <option value="guanZhou">广州</option> </select> </form> </body> </html>
1.3.7 表单验证
用户在表单中输入的内容提交到服务器之前,在客户端利用表单控件产生的事件,运用JavaScript,验证用户输入数据的有效性。
1. 正则表达式
表单验证常用的正则表达式如下:
验证邮政编码:/^\d{6}$/ 验证身份证号码:/^\d{15}$|^\d{18}$|^\d{17}[xX]$/ 验证电子邮箱地址:/^\w+((-\w+)|(\.\w+))∗\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)∗\. [A-Za-z0-9]+$/ 验证数字或英文字母:/^[a-z0-9]+$/ 验证日期格式:/((^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(10|12|0? [13578])([-\/\. _])(3[01]|[12][0-9]|0? [1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(11|0? [469])([-\/\._])(30|[12][0-9]|0? [1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\. _])(0?2)([-\/\._])(2[0-8]|1[0-9]|0? [1-9])$)|(^([2468][048]00)([-\/\._])(0?2) ([-\/\._])(29)$)|(^([3579][26]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][0] [48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][0][48])([-\/\._])(0?2)([-\/ \._])(29)$)|(^([1][89][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9] [2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][13579][26])([-\/\._])(0? 2)([-\/\._])(29)$)|(^([2-9][0-9][13579][26])([-\/\._])(0?2)([-\/\._])(29)$))/
正则表达式的应用示例代码如下:
<html> <head> <title>正则表达式的应用</title> <script type="text/javascript"> //验证 Email function checkEmail(){ var exp=/^\w+((-\w+)|(\.\w+))∗\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)∗\.[A- Za-z0-9]+$/; if(! exp.test(document.forms[0].email.value)){ alert("Email格式错误!"); document.forms[0].email.focus(); return false; }else{ alert("Email格式正确!"); return true; } } </script> </head> <body> <form action=""> Mail:<input type="text" name="email" /><br> <input type="button" value="提交" onclick="return checkEmail()" /> </form> </body> </html>
2. 表单验证实例
验证密码域:不能为空,长度要大于等于6,只能是字母或数字。代码如下:
<html> <head> <title>表单验证实例</title> <script type="text/javascript"> function valid(form){ //验证非空 if(form.pass.value.length ==0){ alert("Please enter a password"); form.pass.focus(); return false; } //验证长度 if(form.pass.value.length <6){ alert("Password must be at least 6 characters"); form.pass.focus(); return false; } var exp=/^[a-z0-9]+$/; //验证格式 if(! exp.test(form.pass.value)){ alert("Password contains illegal characters"); form.pass.focus(); return false; } alert("OK password"); return true; } </script> </head> <body> <form action=""> Enter your password: <input name="pass" type="password"/> <input type="button" value="submit password" onclick="return valid (this.form)"/> </form> </body> </html>
1.3.8 实践环节——表单验证
制作一个用户注册页面practice1_3.html,具体要求如下:
(1)有常用的登录账号、密码、确认密码、姓名、身份证号码(只考虑18位的身份证)、出生年月日、住址、邮编、E-mail等输入区域(自己设定)。
(2)自己设定验证规则,在提交时检验是否符合要求,用alert提醒出非法的输入,并将焦点返回要输入的控件对象。
(3)根据出生年月日判断身份证号码是否合法(只考虑18位身份证)。
(4)其他验证:登录账号只能是字母或数字且以字母开头;密码要在8位以上且需要有字母和数字之外的字符;出生年月日的格式为yyyy-mm-dd;邮编为6位数字;E-mail的基本格式验证。