1 概念
js:javascript:::W3C
jscript::::微软Microsoft 自己的 jsript=js+ActiveXObject(可以访问本地磁盘文件的对象)
一门基于对象和事件驱动的客户端脚本语言
解释:基于对象:js中所有的内容都是对象 js编程依赖于浏览器内置对象
事件:客户在浏览器执行的操作::点击鼠标 键盘输入
事件驱动:当客户执行某个操作 此事件关联的js代码 就会执行
客户端:js内嵌在html(客户端页面)中 浏览器内置有解析js的引擎
脚本语言:内嵌在页面中 实现页面动态效果(数据/样式可以更改)的语言
前端三剑客:
html:提供标签 封装数据
css:提供属性 控制样式
js:提供逻辑判断 实现动态效果
2 js的特点
特点: 1 基于对象
2 简单性(弱类型语言,语法不太严格)
3 跨平台(js代码可以在任意操作系统上运行)
4 安全性(不允许访问硬盘)
5 动态性(通过js代码实现页面的动态效果(页面样式和数据发生变化))
6 解释型语言(浏览器通过js引擎直接解释后即可运行 不会生成字节码文件)
3 js和java的区别
java:一种实现后台业务逻辑的面向对象的高级编程语言
js:一种基于对象和事件驱动的客户端脚本语言
相同之处:都是编程类语言
不同之处:
1 js是基于对象
java是面向对象(编程思想)
2 js是弱类型语言(变量的类型可以更改)
java是强类型语言(定义变量时 必须先制定类型 变量一旦定义类型不能更改 而且只能存储对应类型的数据)
3 js实现页面动态效果
java实现后台业务逻辑
4 js是解释性语言:js被浏览器中内置的js引擎 解释后即可运行
java是编译性语言:java代码 必须被编译器编译为字节码文件后 字节码文件才能被jvm运行
5 js是Netscape(网境) 公司的产品
java是sun公司的产品 被oracle收购
4 所有编程类语言的组成
关键字:具有特殊含义的单词/字符
标识符:名字 命名规则和命名规范
数据类型:数据进行分类(字符、数字、布尔、字节)
运算符:进行运算的符号(算术运算符、比较运算符、赋值运算符、逻辑运算符、三元运算符、位运算符)
变量:内存中存储单值数据的一片区域
语句:一段完整的计算机命令
注释:对代码进行解释说明
流程控制:通过关键字控制代码的执行流程
方法:对一个具有完整功能代码的封装
数组:内存中存储多个数据的容器
对象:数据和功能的封装体(只针对于面向对象的语言)
5 js和html结合的方式
- 方法1:alert(n); 弹出框:以弹出框的方式 展示参数
<!--方式1:在html的任意位置都可以定义script标签:script标签中就是js代码-->
<script type="text/javascript">
// 方法1:alert(); 弹出框:以弹出框的方式 展示参数
alert("1111");
</script>
<!--方式2:在html的任意位置都可以定义script标签:通过src属性引入外部css文件-->
<script type="text/javascript" src="js1.js">
alert("2222");//当script标签引入外部js文件 此标签内的js代码无效
</script>
- js1.js
//js代码
alert("3333");
5 js的基本语法(和java不同之处)
5.1 数据类型:
-
方法1:typeof(n) :获取参数数据的类型
-
方法2:document.write(n): 把参数数据打印到页面
<script type="text/javascript">
// 方法2:typeof(n) 获取参数数据的类型
// 方法3:document.write(n) 把参数显示在页面
document.write('a'+"的类型"+typeof('a')+"<br/>");//string
document.write("abc"+"的类型"+typeof("abc")+"<br/>");//string
document.write(1+"的类型"+typeof(1)+"<br/>");//number
document.write(1.1+"的类型"+typeof(1.1)+"<br/>");//number
document.write(true+"的类型"+typeof(true)+"<br/>");//boolen
document.write([1,2,3]+"的类型"+typeof([1,2,3])+"<br/>");//Object
document.write(new Object()+"的类型"+typeof(new Object())+"<br/>");//Object
document.write(new Date()+"的类型"+typeof(new Date())+"<br/>");//Object
var a;//定义变量
document.write(a+"变量没有赋值的类型"+typeof(a)+"<br/>");//undefined
//js中只存在5种类型:string number boolean object undefined
</script>
注意
- js中 字符和字符串都是string类型
- js中如果一个变量没有赋值:默认初始值是undefined 表示变量没有赋值
- js种 数字都是number类型 不区分整数和浮点
5.2 js的注释
和java完全相同
5.3 变量
js是弱类型语言:内存中变量的空间大小可以更改
定义变量用关键字var即可
<script type="text/javascript">
//4.5 常量和变量
//定义变量var
var k=1;
//注意1:js中变量可以定义多次
var k=2;
document.write(k+":::"+typeof(k)+"<br/>");
//注意2:js中变量可以不定义 直接赋值 并使用
m=2;
document.write("m="+m+"<br/>");
//注意3:js中变量不赋值 直接使用 默认值是undefined:::表示此变量没有赋值
var n;
document.write("n="+n+"<br/>");
//注意4:js中变量不能不定义 不赋值 直接使用::语法报错
//document.write("h="+h+"<br/>");
document.write("1="+1+"<br/>");
//注意5:整个页面的script标签是相通的
//注意6:js中变量的数据类型可以更改
k=2;
document.write(k+":::"+typeof(k)+"<br/>");
k=true;
document.write(k+":::"+typeof(k)+"<br/>");
</script>
<script type="text/javascript">
document.write("m="+m+"<br/>");
</script>
5.4 几个特殊数据
<script type="text/javascript">
//注意3:NaN,""," ",null,undefined
document.write("(\'a\'-2)="+('a'-2)+"<br/>");
document.write("NaN表示结果不是数字<br/>");
document.write("\"\"表示结果是空字符串 没有字符 但是字符串对象<br/>");
document.write("\' \'表示结果是字符串 有字符 有一个空字符的字符串对象<br/>");
document.write("null表示变量没有指向一个对象<br/>");
document.write("undefined表示变量没有赋初始值<br/>");
document.write("undefined+1 ="+(undefined+1)+"<br/>");//NaN
document.write("NaN+1 ="+(NaN+1)+"<br/>");//NaN
document.write("null+1 ="+(null+1)+"<br/>");//NaN
</script>
5.5 运算符
<script type="text/javascript">
document.write("<h1>js中运算符</h1>");
//4.6运算符:算术运算符:+ - * / % ++ --
//注意1:js是弱类型语言:1/2=0.5
document.write("1/2="+1/2+"<br/>");
//注意2:js中字符串进行-*/% 会自动的把字符串转化为数字
document.write("(\'1\'+2) 字符串连接运算="+('1'+2)+"<br/>");
document.write("(\'1\'-2) ="+('1'-2)+"<br/>");
//方法4:parseInt(n);把变量n的值转换为整数
//方法5:parseFloat(n);把变量n的值转换为浮点数字
document.write("parseInt(\'12\')+1="+(parseInt('12')+1)+"<br/>");
document.write("parseInt(\'12.3\')+1="+(parseInt('12.3')+1)+"<br/>");
document.write("parseFloat(\'12.3\')+1="+(parseFloat('12.3')+1)+"<br/>");
//2 比较运算符: > >= < <= != ==
//3 逻辑运算符: && || ^ !
//4 赋值运算符:= += *= -= /= %=
//5 位运算符: >>> <<< & | ^ 操作的是数字的二进制
//6 三元运算符
c=1>2?1:2;
document.write("变量c="+c+"<br/>");
</script>
5.6 流程控制之选择结构
<script type="text/javascript">
//4.7流程控制之选择结构
if(2>1){
document.write("2>1成立<br/>");
}else{
document.write("2>1不成立<br/>");
}
//注意:在js中所有的数据都可以作为boolean: 0,null,NaN,undefined,""是false 其他都是true
var k=1;
if(k){
document.write(k+"是true <br/>");
}
k=1.1;
if(k){
document.write(k+"是true <br/>");
}
k="abc";
if(k){
document.write(k+"是true <br/>");
}
k=" ";
if(k){
document.write(k+"是true <br/>");
}
k=[];
if(k){
document.write(k+"是true <br/>");
}
k=new Date();
if(k){
document.write(k+"是true <br/>");
}
k=undefined;
if(!k){
document.write(k+"是false <br/>");
}
k='a'-1;
if(!k){
document.write(k+"是false <br/>");
}
k=null;
if(!k){
document.write(k+"是false <br/>");
}
k=1-1;
if(!k){
document.write(k+"是false <br/>");
}
k="";
if(!k){
document.write(k+"是false <br/>");
}
if(1==k){
document.write(k+"是true <br/>");
}
</script>
5.7 流程控制之循环结构
<html>
<head> <!--整个页面属性的设置-->
<title>js01概念</title>
<meta charset="utf-8"/>
<style type="text/css">
table{
width:900px;
/*border:1px solid blue;*/
margin:10px auto;
border-collapse:collapse;/*合并相邻单元格之间的边框*/
}
td{
font-size:24px;
padding:10px;
border:1px solid blue;
}
</style>
</head>
<body>
<script type="text/javascript">
//4.7流程控制之循环结构
//打印99乘法表
document.write("<hr>");
document.write("<table>");
for(var i=1;i<=9;i++){
document.write("<tr>");
for(var j=1;j<=i;j++){
document.write("<td>"+i+"*"+j+"="+i*j+"</td>");
}
document.write("</tr>");
}
document.write("</table>");
//判断一个数字是不是质数
for(var n=1;n<=100;n++){
//判断n是不是质数
var b=true;//定义一个变量作为标签
//定义变量m从2跑到n-1 循环判断是否能除尽n
for(var m=2;m<n;m++){
if(n%m==0){
b=false;
break;
}
}
if(n>1&&b){
document.write(n+"是质数!<br/>");
}
}
//打印4个方向的99乘法表
//判断pi到3.1415926到3.1415927之间计算了多少次
</script>
</body>
</html>
6 js的方法/函数
<!--
方法: 指定功能代码的封装
作用: 代码的复用
格式: function 方法名(参数列表){
方法体//实现功能的代码块
return 返回值;//如果没有返回值 return可以省略
}
-->
<script type="text/javascript">
//方法:求两个数字的和
//定义方法
//注意0:js是弱类型语言 方法不需要返回值类型的标识
//注意1:js方法中:定义形参不需要var
function qiuHe(a,b){
var k=1;
}
//调用方法
var sum1=qiuHe(1,2);
document.write(sum1+"<br/>");
//注意2:js中变量:方法中定义的变量称为局部变量 方法外定义的变量称为全局变量
// 局部变量作用域:当前方法 全局变量作用域:整个页面属性
var i=1;
for(var j=2;j<=10;j++){
var h=1;
}
document.write("i="+i+",j="+j+",h="+h+"<br/>");
function test01(a,b){
var k=1;
document.write("方法中获取全局变量成功:::i="+i+",j="+j+",h="+h+"<br/>");
document.write("方法中获取局部变量成功:::a="+a+",k="+k+",b="+b+"<br/>");
}
test01(1,2);
//document.write("方法外访问局部变量失败:a="+a+",k="+k+",b="+b+"<br/>");
//注意3:js中方法:实参与形参个数可以不同:::js方法不存在方法重载
function test02(a,b){
document.write("test02::a="+a+",b="+b+"<br/>");
}
test02(1,2);
test02(11,22,33);//实参比形参个数多:a/b只接收前两个
test02(44);//test02::a=44,b=undefined::实参比形参个数少:没有赋值的形参为undefined
//注意4:js方法体中默认使用数组arguments接收所有的实参
function test03(a,b){
document.write("test03::a="+a+",b="+b+"<br/>");
document.write("js方法体中默认使用数组arguments接收所有的实参="+arguments+"<br/>");
for(var i=0;i<arguments.length;i++){
document.write("arguments["+i+"]="+arguments[i]+"<br/>");
}
}
test03(11,12,13,14,15);
//注意5:js方法也是对象
var test031=test03(1,2);//使用变量test031接收test03的返回值
document.write("test031="+test031+"<br/>");//test031=undefined
var test032=test03;//给方法test03又起个名字test032
document.write("test032="+test032+"<br/>");//test032=function test03(a,b){ ..... }
test032(1,2);
</script>
7 方法的练习
<script type="text/javascript">
//判断一个数是不是质数
function pdZhiShu01(n){
var b=true;
for(var m=2;m<n;m++){
if(n%m==0){
b=false;
break;
}
}
return n>1&&b;
}
function pdZhiShu02(n){
for(var m=2;m<n;m++){
if(n%m==0){
return false;
}
}
return n>1;
}
for(var n=1;n<=100;n++){
if(pdZhiShu02(n)){
document.write("n="+n+"是质数!<br/>");
}
}
//判断pi到3.1415926到3.1415927之间计算了多少次:4/1-4/3+4/5-4/7+4/9
function qiuPI(){
var pi=0;
for(var ciShu=0;pi<=3.1415926||pi>=3.1415927;ciShu++){
var num=4/(ciShu*2+1);
pi+=(ciShu%2==0?num:num*(-1));
}
document.write("pi="+pi+",ciShu="+ciShu+"<br/>");
}
qiuPI();
</script>
8 js的类库
8.1 Array类:数组
//js数组创建两种方式:通过[] 通过new Array();
var arr1=[1,2,3,4,5,8];
document.write(arr1+"<br/>");//1,2,3,4,5,8
arr1=new Array(1,2,3,4,5,8);
document.write(arr1+"<br/>");//1,2,3,4,5,8
//js数组注意1:js数组长度可变
document.write(arr1.length+"<br/>");//6
document.write(arr1[6]+"<br/>");//undefined
arr1[6]=11;
document.write(arr1.length+"<br/>");//7
//js数组注意2:js数组不存在数组下标越界异常:访问到不存在的下标的元素时 值为undefined
document.write(arr1[-1]+"<br/>");//undefined
//js数组注意3:js数组元素类型可以不同
arr1=[undefined,"abc",3,[1,2,3,4],new Date(),new Object(),true];
for(var i=0;i<arr1.length;i++){
document.write("arr1["+i+"]="+arr1[i]+"<br/>");//6
}
//获取最大值
arr1=[11,12,32,41,15,8,0];
function getMax1(arr){
var max=arr[0];
for(var i=1;i<arr.length;i++){
max=max>arr[i]?max:arr[i];
}
return max;
}
document.write(arr1+"最大值是:"+getMax1(arr1)+"<br/>");
//排序
function paiXu01(arr){
for(var i=0;i<arr.length-1;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
var k=arr[i];arr[i]=arr[j];arr[j]=k;
}
}
}
}
document.write("排序前:"+arr1+"<br/>");
paiXu01(arr1);
document.write("排序后:"+arr1+"<br/>");
//js中Array类的属性:length
//js中Array类的构造方法:
// arrayObj = new Array();创建一个没有元素的数组
// arrayObj = new Array([size]);创建一个初始元素个数的数组
// arrayObj = new Array([element0[, element1[, ...[, elementN]]]]);创建一个初始元素值的数组
arr1=new Array(3);
document.write(arr1.length+"<br/>");
arr1=new Array(1);
arr1[0]=3;
document.write(arr1.length+"<br/>");
//js中Array类的方法:
//1 Array concat([item1...]);添加参数元素到当前数组后面 返回此数组
arr1=[11,12,32,41,15,8,0];
document.write(arr1.concat(1,2,3,4)+"<br/>");
//2 String join(separator);使用参数字符拼接所有元素形成一个字符串
arr1=[11,12,32,41,15,8,0];
document.write(arr1.join("-")+"<br/>");//11-12-32-41-15-8-0
//3 Object pop( );移除并返回最后一个元素
//3 Object shift( );移除并返回第一个元素
arr1=[11,12,32,41,15,8,0];
document.write("移除前:"+arr1+"<br/>");
document.write(arr1.pop()+"<br/>");
document.write(arr1.shift()+"<br/>");
document.write("移除后:"+arr1+"<br/>");
//4 Array slice(start, [end]);获取数组的一部分,从start到end-1
//4 Array slice(start);获取数组的一部分,从start到length-1
arr1=[11,12,32,41,15,8,0,3,4,5,7];
document.write(arr1+"<br/>");
document.write("子数组:"+arr1.slice(1,5)+"<br/>");
document.write("子数组:"+arr1.slice(1)+"<br/>");
//5 Array reverse( );反转
document.write(arr1+"<br/>");
document.write("反转:"+arr1.reverse()+"<br/>");
//6 Array sort([sortfunction]);排序
document.write(arr1+"<br/>");
document.write("排序:"+arr1.sort()+"<br/>");
//排序方法必须返回:正数 0 负数
function mySortFunction(a,b){
//按数字大小排序
a=parseFloat(a);
b=parseFloat(b);
return a==b?0:(a>b?1:-1);
}
document.write("排序:"+arr1.sort(mySortFunction)+"<br/>");
//4位数的黑洞:计算每个四位数(完全相同的除外) 进入黑洞6174需要的次数:
//各个位数的值 组成一个最大值和最小值 求差 循环此操作
8.2 String类
<script type="text/javascript">
/*
String类:
js和java相同的方法:
1:String charAt(index) :获取index下标处的字符
2: String concat(string...):把参数字符串拼接到当前字符串后面 :当前字符串没有各个
3: int indexOf(str[, startIndex]):从startIndex位置处开始,获取str第一次出现的位置
int lastIndexOf(str[, startindex]):从startIndex位置处开始,倒着找 获取str第一次出现的位置
4: string replace(old, new):用new替换old:只替换第一个
5: string[] split(separator):切割
6: string substr(start [, length ]) :截取子串 从start开始 截取length个字符
strVariable.substring(start, end):截取子串 从start开始 到end-1结束
7: string toLowerCase( ):所有字符小写
string toUpperCase( ):所有字符大写
js中特有的方法:
1:str bold()
2:str fontcolor(colorVal)
3:str fontsize(intSize)
4:str italics( )
5: int charCodeAt(index);获取index下标处的字符在编码表中对应的整数
6:String fromCharCode(code);获取参数整数在编码表中对应的字符
*/
var s="abc123abc321apple";
document.write(s+":charAt(index):获取index下标处的字符:"+s.charAt(1)+"<br/>");
document.write(s+":concat(string...):把参数字符串拼接到当前字符串后面:"+s.concat(1,"abc",true)+"<br/>");
document.write(s+"<br/>");
document.write(s+":indexOf(str):获取str第一次出现的位置:"+s.indexOf("a")+"<br/>");
document.write(s+":indexOf(str[, startIndex]):从startIndex位置处开始,获取str第一次出现的位置:"+s.indexOf("a",5)+"<br/>");
document.write(s+":replace(old, new):用new替换old:"+s.replace("a","-")+"<br/>");
document.write(s+":split(separator):切割:"+s.split("a")+"<br/>");
document.write(s+":substr(separator):截取子串:"+s.substr(2,5)+"<br/>");
document.write(s+":substr(separator):截取子串:"+s.substr(2)+"<br/>");
document.write(s+":substring(separator):截取子串:"+s.substring(2,5)+"<br/>");
document.write(s+":substring(separator):截取子串:"+s.substring(2)+"<br/>");
document.write(s.bold()+"::::<b>"+s+"</b><br/>");
document.write(s.italics()+"::::<i>"+s+"</i><br/>");
document.write(s.fontcolor("#ff0000")+"::::<font color='#ff0000'>"+s+"</font><br/>");
document.write(s.fontsize(7)+"::::<font size='7'>"+s+"</font><br/>");
document.write(s.fontsize(7).fontcolor("red").bold().italics()+"<br/>");
var s="abc123abc321apple";
for(var i=0;i<s.length;i++){
document.write(s.charAt(i)+"::::对应的整数:::"+s.charCodeAt(i)+"<br/>");
document.write(String.fromCharCode(i+97)+"::::由整数获取字符:::::"+(i+97)+"<br/>");
}
</script>
8.3 Math类
<script type="text/javascript">
/*
Math类:与数学运算相关的方法
1:绝对值 : double abs(n)
2:近似值
: double ceil(n) 获取大于等于参数的最小正数
: double floor(n) 获取小于等于参数的最大正数
: double round(n) 四舍五入
3:幂运算
: double pow(base, exponent)
: double sqrt(number)
4:随机
: double random()
*/
for(var n=0.1;n<10;n+=0.1){
document.write("Math.ceil("+n+"):::::"+Math.ceil(n)+"<br/>");
document.write("Math.floor("+n+"):::::"+Math.floor(n)+"<br/>");
document.write("Math.round("+n+"):::::"+Math.round(n)+"<br/>");
}
document.write("Math.pow(2,3)求2的3次方:::::"+Math.pow(2,3)+"<br/>");
document.write("Math.sqrt(2)求2开平方:::::"+Math.sqrt(2)+"<br/>");
document.write("Math.random()随机:::::"+Math.random()+"<br/>");
document.write("Math.random()随机1-7 :乘以范围 加上起始值 转换为整数:::::"+parseInt(Math.random()*7+1)+"<br/>");
</script>
8.4 Date类
<script type="text/javascript">
/*
Date类:日期
1 构造方法:
dateObj = new Date()
dateObj = new Date(dateVal)
dateObj = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]])
2 获取和设置时间参数
int getXxx()
void setXxx(val);
3 Date和毫秒值之间的转换
long getTime();
void setTime(val);
4 获取本地日期格式的字符串
String toLocaleString();
*/
var date=new Date();//当前时间
document.write(date+"<br/>");
date=new Date(0);//相对于历元:1970-1-1 0:0:0
document.write(date.toLocaleString()+"<br/>");
date=new Date(2022,10-1,7,16,25,30);//指定年月日时分秒:注意月是0-11
document.write(date.toLocaleString()+"<br/>");
//方法由日期获取字符串
function date2Str(d){
var y=d.getYear()+1900;
var m=d.getMonth()+1;
var da=d.getDate();
var w=d.getDay();//0-日 1-一 2-二
var h=d.getHours();
var mi=d.getMinutes();
var s=d.getSeconds();
var week="日一二三四五六";
var str=y+"年"+m+"月"+da+"号 星期"+week.charAt(w)+" "+h+":"+mi+":"+s;
document.write(str+"<br/>");
document.write(d.getFullYear()+"<br/>");//2022
}
date2Str(new Date());
document.write("当前时间的毫秒值:"+new Date().getTime()+"<br/>");//2022
date=new Date();
date.setTime(0);
document.write(date.toLocaleString()+"<br/>");
</script>
8.5 Global类
<script type="text/javascript">
/*
Global:一个封装全局方法的对象:::期中的方法不属于某种类型
isNaN(N);判断数据是不是NaN
parseInt(n);获取一个整数
parseFloat(n);获取一个浮点
eval(str);解析字符串
*/
//注意:判断一个数据是不是NaN 不能用== 而是使用isNaN方法
var v="a"/1;
document.write("v:::::"+v+"<br/>");
document.write("v==NaN:::::"+(v==NaN)+"<br/>");
document.write("isNaN(v):::::"+isNaN(v)+"<br/>");
var s="alert(111);";
document.write(s+"<br/>");
//eval(s);
s="var i=1;i++;alert('i='+i);";
eval(s);
</script>
8.6 RegExp类
<script type="text/javascript">
/*
正则表达式:为字符串定义正确规则
js中的正则表达式和java基本一样
使用特殊字符来表示正则规则
1: 表示范围: []
[1-9] 可以取值1到9中的任意一个字符
[1234] 可以取值1234中的任意一个字符
[^1-9] 可以取值除了1到9以外的任意一个字符
[a-h[c-z]] 取并集::[a-z]
[a-h&&[c-z]] 取交集::[c-h]
2: 特殊字符
. 表示任意字符
/w 单词字符 :[0-9a-zA-Z_]
/W 非单词字符 :[^0-9a-zA-Z_]
/d 数字字符 :[0-9]
/D 非数字字符 :[^0-9]
/s 空白字符 :[ \t\n\x0B\f\r]
/S 非空白字符
3: 表示次数 {}
a{n} :a出现n次
a{n,} :a出现>=n次
a{n,m} :a出现>=n次 <=m次
a+ : a出现>=1次
a? : a出现<=1次
a* : a出现>=0次
//注意1:js中定义正则表达式 两种方式
*/
//注意1:js中定义正则表达式 两种方式
var regex1=/^1[3456789][0-9]{9}$/;
var regex1=new RegExp("^1[3456789][0-9]{9}$");
//可以正则的方法1:字符串对象的方法:string[] split(separator)
document.write("ab123ac144ab178a1213aui".split(/[0-9]+/)+"<br/>");
//可以正则的方法2:字符串对象的方法:string replace(rgExp, replaceText)
document.write("ab123ac144ab178a1213aui".replace(/[0-9]+/,"-")+"<br/>");
//可以正则的方法3:正则对象的方法:boolean test(str)
document.write(/^1[3456789][0-9]{9}$/.test("15036088040")+"<br/>");
document.write(/^1[3456789][0-9]{9}$/.test("150360880401")+"<br/>");
document.write(/1[3456789][0-9]{9}/.test("15036088040")+"<br/>");
//注意:当使用test进行整个字符串匹配时 必须加^$表示首尾
document.write(/1[3456789][0-9]{9}/.test("150360880401")+"<br/>");
//以下写法完全相同
document.write("ab123ac144ab178a1213aui876YTR273TRRE111".split(/[a-zA-Z]+/)+"<br/>");
document.write("ab123ac144ab178a1213aui876YTR273TRRE111".split(/[a-z]+/i)+"<br/>");
</script>