最近一段时间比较急躁,花了大量的时间在看书和看视频上,本想可以快速的了解JS中的有关知识并扩展本身的认识, 少有时间来这里整理和记录了,后来发现知识点看了就忘,仍是得多多练习才能把知识内化掉。正则表达式
1、字符串及有关知识数组
一、字符串和数组相关性比较大,先说说数组吧。函数
(1)数组的命名方式有多种,以下:编码
var arr=new Arrray();视频
var arr=new Array(3);对象
var arr=new Array('3');字符串
var arr=[ ];回调函数
var arr=[1,2,3];string
注意第二个和第三个的区别。it
(2)toLocalString(),toString(),valueOf()
全部对象都有以上三种方法,看如下案例区别(来源高程P89):
alert(arr.toString()); (toString()返回的是一个用逗号拼接的字符串)
alert(arr.valueOf);(valueOf返回的仍是数组)
alert(arr); (因alert()要接受字符串参数,后台会默认调用toString()方法)
(3)数组中经常使用的一些方法:
arr.join('-'),用-将arr的各项连成一条字符串,若是直接写join()则会默认以逗号链接arr的各项,感受和toString()方法同样;
arr.push(value),将value添加到arr的末尾,value可多个,用逗号隔开,其返回值为添加value后的arr;
arr.unshift(value)是将value添加到arr的第一个位置,用法和push同样;
arr.pop(),将arr的最后一项值删除,返回值为该删除项;
arr.shift(),用法和pop()同样,可是是将arr的首项删除;
arr.reverse(),可将arr中的各项顺序颠倒,返回值为颠倒后的arr;
arr.sort(),默认状况下,该方法按升序排列数组项,为实现排列,该方法回调用每一个数组项的toString()转型方法,而后比较获得字符串,即便数组中的每项都是数值,sort()方法比较的也是字符串,见P92,可是sort()可接收一个比较函数,函数写在括号内;
arr1.concat(arr2),将arr2添加到arr1后面组成一个新的数组,它的返回值就是这个新的数组;
arr.slice(1,4),截取数组,其返回值为起始到结束位置之间的项,但不包括最后一项,负数的话加上总长度再计量;
arr.splice(起始位置,删除的项,要插入的任意数量的项),可实现删除、插入和替换,其返回值为删除的项;
arr.indexOf(要查找的项,查找起点位置)和arr.lastIndexOf(要查找的项,查找起点位置),一个是从前日后查找,一个是从后往前查找,返回的是项的位置,查找不到则为-1;
arr.reduce(函数,初始值),arr.reduceRight(函数,初始值);
(4)字符串的一些方法:
string.charAt(字符位置),返回该位置下的字符;
string.charCodeAt(字符位置),返回该位置下字符的字符编码;
string.concat(),和数组用法同样;
string.split(''),以split传参的字符来分割字符串为数组,参数为必填的,若是不填则仍是为string;
slice(),substr(),substring()用法基本上和数组中的slice()同样,它们的区别体如今参数为负数的时候;
indexOf()和lastIndexOf()和数组中的用法同样;
string.toLowerCase(),string.toUpperCase(),转换字符串的大小写,返回值为转换后的字符串
(5)正则表达式
正则的建立方式:
var re=/a/;或者var re=new RegExp('a');
正则中常应用的几种方法以下(直接写写法):
/re/.test(string);判断string中是否有正则表达式,若是有则返回true,若是没有则返回false;
string.search(re);以正则表达式去匹配字符串,若是匹配成功,则返回匹配成功的位置(以首字母位置肯定),若是匹配失败则返回-1;
string.match(re);以正则表达式去匹配字符串,若是匹配成功,则返回匹配成功的数组,可能有多个;
string.replace(re,新字符串/回调函数);以正则表达式去匹配字符串,若是匹配成功,则匹配成功的项替换成新的字符串;
正则默认条件下是区分大小写和一旦匹配成功就会结束匹配的两条原则,若想更改默认条件则应以下:
var re=/a/i 或 var re=new RegExp('a','i'),实现不区分大小写;
var re=/a/g 或 如上将i改成g便可,实现全局匹配;
正则中[ ]括号中的总体表明一个字符(这个要特别注意),[^a] 表明非a, [a-z]表明a-z的任一个字符, [abc]表明abc中任一个;
正则中的转义字符:
\s 表明空格,\d表明数字, \w表明字符(字母、数字、下划线)
\S表明非空格, \D表明非数字, \W表明非字符;
正则中的量词(出现的次数):
{n,m}表明至少出现n次最多出现m次,{n,}表明至少出现n次,*表明出现任意次即{0,},?表明0次或1次即{0,1},+表明出现1次或任意次{1,},{n}表明出现正好n次;
^不在[ ]里面时表示开始,$表示结束;
正则中的一个难点是replace中的回调函数理解,可多看视频;