js高级 day5

1、浅拷贝

var obj1={age:10};

var obj2={};

function extend(a,b){

for(var key in a){

b[key]=a[key];

}

}

extend(obj1,obj2);

2、深拷贝

var obj1={age:10};

var obj2={};

function extend(a,b){

for(var key in a){

var item=a[key];

if(item instanceof Array){ //数组

b[key]=[];

extend(item,b[key]);

}else if(item instanceof Object){ //对象

b[key]={};

extend(item,b[key]);

}else{

b[key]=item;

}

}

}

extend(obj1,obj2);

3、遍历DOM树

//根据根节点,调用fn函数,显示根结点名字

function foeDOM(root1){

f1(root1); //调用f1,显示节点名字

var children=root1.children; //获取所有子节点

forChildren(children); //遍历所有子节点函数

}

//给一个子节点,把子节点中所有子节点显示出来

function forChildren(children){

for(var i=0,i<children.length;i++){

var children=children[i];

f1(children);

child.children&&forDOM(child); //判断child下还有没有子节点,有继续遍历

}

}

//函数调用,传入根节点

forDOM(root);

function f1(node){

console.log(node.nodeName);

}

4、正则表达式:匹配字符串

. 除了\n以外任意一个字符

[] 范围 ([a-z]所有小写字母任意一个 [A-Z]所有大写字母任意一个 [a-zA-Z]所有字母任意一个 [0-9a-zA-Z]所有字母或数字中一个)

| 或者

() 分组 提升优先级

* 前面表达式出现0次到多次 {0,}

+ 前面表达式出现1次到多次 {1,}

?前面表达式出现0次到1次 {0,1}

{} 明确表达表达时出现次数

^ 以什么开始(放外面前面)或者取非(取反放里面)

$ 以什么结束放后面

\d 数字中任意一个 \D 非数字中一个

\s 空白符 \S 非空白符

\w 非特殊符号 \W 特殊符号

5、练习

身份证:15位或者18位

([1-9][0-9]{14})|([1-9][0-9]{16}[0-9xX])        ([1-9][0-9]{14})([0-9]{2}[0-9xX])?

座机号:010-13876754   0431-87123490

[0-9]{3,4}[-][0-9]{8}          \d{3,4}[-]\d{8}

qq号:5到11位

[1-9][0-9]{4,10}         \d{5,11}

手机号:([1][358][0-9][0-9]{8})|([1][4][37][0-9]{8})|([1][7][01367][0-9]{8})        \d{11}

邮箱:[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}

6、创建正则表达式对象:在注释符中间写正则表达式

//通过构造函数

var reg=new RegExp(/\d{5}/);

var flag=reg.test("我的电话是10086");

console.log(flag);

//字面量方式创建

var reg=/\d{1,5}/;

var flag=reg.test("幸运数字:888");

console.log(flag);

合并console.log(/\d{1,5}/.test("幸运数字:888"));

7、密码强度

//获取文本框注册键盘抬起事件

my$("pwd").onkeyup=function(){

my$("strengthLevel1"),className="strengthLv"+(this.value.length>=6?getLvl(this.value):0);

};

//给密码,返回相应级别

function getLvl(pwd){

var lvl=0;

if(/[0-9]/.test(pwd)){

lvl++;

}

if(/[a-zA-Z]/.test(pwd)){

lvl++;

}

if(/[^0-9a-zA-Z_]/.test(pwd)){

lvl++;

}

return lvl;

8、验证邮箱

<input type="text" value="" id="email" />

//获取文本框,注册失去焦点事件

document.getElementById("email").onblur=function(){

//判断这个文本框是不是邮箱

var reg=/^[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}$/;

if(reg.test(this.value)){

this.style.backgroundColor="green";

}else{

this.style.backgroundColor="red";

}

};

9、验证用户输入是不是中文

<input type="text" value="" id="userName" />

document.getElementById("userName").onblur=function(){

var reg=/^[\u4e00-\u9fa5]{2,6}$/

if(reg.test(this.value)){

this.style.backgroundColor="green";

}else{

this.style.backgroundColor="red";

}

};

escape("")中文变成编码  unescape("")编码变成中文

10、验证表单

checkInput(my$("qq"),/^\d{5,11}$/);

checkInput(my$("phone"),/^\d{11}$/);

checkInput(my$("e-mail"),/^[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}$/);

checkInput(my$("telephone"),/^\d{3,4[-]\d{7,8}}$/);

checkInput(my$("fullname"),/^[\u4e00-\u9fa5]{2,6}$/);

function checkInput(input,reg){

input.onblur=function(){

if(reg.test(this.value)){

this.nextElementSibling.innerText="正确";

this.nextElementSibling.style.color="green";

}else{

this.nextElementSibling.innerText="错误";

this.nextElementSibling.style.color="red";

}

}

}

11、正则表达式方法

g:表示全局加在正则表达式后面

i:忽略大小写

正则表达式对象.$3:提取组

12、数组和伪数组

看能否调用array里的方法

猜你喜欢

转载自blog.csdn.net/LBunny_/article/details/82839853