您的位置:首页 > Web前端 > JavaScript

javascript第七天

2016-05-12 20:52 316 查看
内置对象

内置对象是ES标准中已经定义好的,由浏览器厂商已经实现的标准对象!内置对象中封装了专门的数据和操作数据常用的API。

Javascript中内置对象包括:String、Boolean、NUmber、Math、Array、Date、Error、Function、Object、Global

包装类型:String、Boolean、Number

String

charAt():获取指定位置的字符

charCodeAt():获取指定位置字符的unicode编号

*************************************

input=prompt("输入信息:");

var result = [];

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

result.push(input.charCodeAt(i));

}

document.write(result.join(""));

//以上方法的缺点在于,每次字符串进行+=时会创建无数多的没用的字符串

//代码优化后

input=prompt("输入信息:");

var result = "";

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

var num = input.chartCodeAt(i);

if(num<1000){

var arr=[0,0,0,0,0];

var code=num+"";

var start=5-num.length;

for(var n=0;n<code.length;n++){

arr[start]=code
;

start++;

}

num=arr.join("");

}

result+=input.charCodeAt(i)

}

document.write(result);

//频繁对字符串+=,要用数组代替!

//step1:每个字符串放入数组

//step2:join(“”)拼接数组元素

字符串三大操作:1.查找关键字2.替换关键字3获取子字符串

查找关键字:var index=str.indexOf("关键字");返回关键字所在位置!*如果没找到,返回-1!*

indexOf:懒:只找第一个关键字位置!蠢:默认只能从位置0开始!

利用indexOf反复循环查找关键字的语句:

var str="女神说要来,我草草的收拾了房间。结果她又说不来了。我说:我草";

var index = -1;

while((index = str.indexOf("我草",index+1))!=-1){//index+1表示从上次找到位置之后,开始

console.log(“位置” +index+“发现关键字”);

}

从最后一个字符,向前找:var index= str.lastIndexOf("关键字",form);//from:开始查找的位置!从from开始向前查找

2. 截取子字符串:

(1)str.slice(start);

(2)str.substring(start,end+1)

substring和slice用法相同,唯一的区别是substring不支持负值作为参数

(3)str.substr(start,count)

以上三种发放省略第二个参数,默认都是取到结尾!

模式匹配:什么是模式匹配:可以设置查找或替换的规则!

何时使用模式匹配:要查找的关键字可能发生有规律的变化。

如何使用模式匹配:1.先定义模式:/关键字/模式

比如:var reg = /no/i;no是要查找的关键字原文,不加“”i表示忽略大小写!

str = str + str.replace(reg,"新值");//默认的replace仅替换第一个关键字!要想全局替换,要在模式中定义“g”

获得所有关键字的内容:var kwords=str.match(reg);只能取得关键字的内容,无法确定每个关键字的位置!

*如果未找到,返回null!以后只要有可能返回null!都要先判断!=null,再处理*

var index=str.search(reg);和indexOf完全相同!

indexOf不支持模式查找!search其实是indexOf的模式查找版

****正则表达式*****

何时使用正则?验证字符串格式,查找关键字,替换关键字

正则表达式:

选择符号:[所有备选字符]:[去草],必须多选一使用,一个[],只能代表一位字符的规则!

[^XXXX]:表示除了XXXXX都行!注意^必须放在[]中的第一个位置,否则,变为普通字符匹配

-符号:字符的范围:备选字符的范围!比如:[0-9][a-z][A-Z][a-zA-Z]

汉子:[\u4e00-\u9fa5]

预定义字符集:使用简化的字符,定义常用字符集

比如:[0-9] -->\d [a-zA-Z0-9_]-->\w 空字符-->\s

如果规则正文中出现特殊符号,用\转为原文:比如'.'代表任意字符,所以如果想使用.应该用\.

数量词:规定前边一个字符出现次数的量词。语法:{min,max}

{num}:固定长度

{min,}:至少min个,多了不限

特殊数量词:+ * ?

?:可有可无,最多只能出现一次

*:可有可无,不限制出现次数

+:至少出现一次!不限制出现次数

():分组:改变模式的匹配顺序 比如:验证身份证号:\d{15}(\d{2}[0-9xX])?

^:如果放在整个正则表达式的开头,表示以XXX开始

$:如果放在整个正则表达式的结尾,表示以XXX结束

?= :预判,前一个字符之后,必须紧跟XXX

?! :预判,前一个字符之后,必须不能跟XXX

RegExp对象:专门封装一条正则表达式,提供使用正则表达式的常用API

如何使用RegExp对象:1.创建 2.调用API

如何创建正则表达式对象:var regExp=/正则表达式/ig;

验证:var boolean=regExp.test('被检查的字符串');如果验证通过:返回true;否则返回false

验证要求完整匹配!查找要求部分匹配

test方法默认:只要找到就返回true!

正则表达式必须最前面加^,后加$

查找:exec:查找关键字的位置,又能找到关键字的内容

var str = “明明喜欢我,却不告诉我;别理我,我想静静;静静是谁?你TM先告诉我明明是谁?”

var regExp = /明明|静静/g;

var arr=[];

while((arr=regExp.exec(str)) != null){

//arr[0]关键字的内容

//arr.index:关键字的位置

document.write('在位置'+arr.index+'发现'+arr[0]);

}

查找总结:仅判断有没有,或者仅查找位置:indexOf()

仅判断有没有,或者仅查找位置并支持正则:search();

仅找到所有关键字的内容:match();

既找内容,又找位置:exec();

贪婪模式:.* .+,默认先匹配整个字符串,再缩小范围

懒惰模式:(.*?) (.+?),从第一个字符开始,向后扩展范围

超链接正则表达式:<a(.*?)href\s*=\s*["'](.*?)["'](.*?)>

从正则表达式匹配的内容中,取一部分:RegExp.$n

n:正则表达式中第n个分组,其实就是第n个圆括号 强调:分组从1开始,必须通过RegExp类型,直接调用$n,不能使用对象!

String对象与正则表达式

str=str.replace("/正则表达式/ig,'替换值'");

var arr=str.match(/正则表达式/ig); str.search(/正则表达式/); str.split(/正则表达式/);

trim功能:去除字符串开始和结尾的空格。中间空格不去掉

对输入字符串的处理,多数要先清楚开头和结尾的空格,再处理

IE8不支持trim()方法!

function trim(str){
//使用正则表达式替换开头和结尾的空字符
var regExp = /(^\s+) | (\s+$)/g;
str = str.replace(regExp,"");
return str;
}


去掉左空格:

function ltrim(str){
var reg = /^\s+/;
return str.replace(reg,"");
}
去掉右空格
function rtrim(str){
var reg = /\s+$/;
return str.replace(reg,"");
}


String总结:所有API都无法修改原字符串,都会返回新字符串,所有StringAPI都需要用变量保存结果!

查找关键字:var index=str.indexOf('关键字',[,from]);

var arr=str.match(/正则/g);

获得子字符串:var substr=str.slice(start,end+1);

str.substring(start,end+1);

str.substr(start,count);

替换:str = str.replace(/正则/g,'替换值');

字符编码转码:var code=str.charCodeAt(index);

var char=String.fromCharCode(code);

RegExp对象总结:

var reg=/正则/ig;

验证str中是否包含reg匹配的关键字:var boolean=reg.test(str);

强调:完整验证,都需要在正则前加^后加$

同时查询所有关键字的内容和位置

while((arr=reg.exec(str))!=null){

arr[0]-->找到的一个关键字

arr.index -->当前关键字的位置

}

RegExp.$n; 获得正则表达式中第n个分组(圆括号)匹配的子字符串

Math类

Math.round(num) --->四舍五入取整

Math.ceil(num)--->向上取整

Math.floor(num)--->向下取整

var arr=[2,3,4,56,8];

var max=Math.max.apply(Math,arr);

获取任意两个数之间的随机数:Math.floor(Math.random()*(max-min+1)+min)

随机生成四位验证码:

step1:将所有字母,数字装入一个数组

var codes=[];

//数字:48-57

for(var i=48;i<=57;codes.push(i),i++);

//大写字母:65-90

for(var i=65;i<=90;codes.push(i),i++);

//小写字母:97-122

for(var i=97;i<=122;codes.push(i),i++);

setp2:

var arr=[];

for(var i=0;i<4;i++){

//从0-61之间随机取,因为一共62个字符

var index=Math.floor(Math.random()*(61-0+1)+0);

var char=String.fromCharCode(codes[index]);

arr.push(char);

}

var code=arr.join("");

document.write("验证码:"+code);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: