正则表达式

正则表达式是一个描述字符模式的对象。

闭包

闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁,函数套函数。

包装器函数

1)Number() :Number.prototype.xxx 2)String() : String.prototype.xxx 3)Boolean():Boolean.prototype.xxx

var str="hello"; //string

console.log(str.length);

//1.new String(str) object String 自动装箱 2.new string(str).length 通过实例对象调用方法3.str-->string 自动拆箱

var num=10;

console.log(num.toString());

console.log(num.toString());

new Number():包装器函数/构造函数

var a=new Number(); a:object

Number():转换函数

var a=Number(); a:number

String.prototype.xxx: string的构造函数原型对象的方法,每个字符串都可以调用

  • 1.length:返回字符串长度
  • 2.charAt(index):返回index位置的字符(下标)
  • 3.charCodeAt(index):返回index位置对应的字符编码ASCII码
  • 4.concat():字符串拼接 同+""效果相同
  • 5.slice():字符串的截取

0:返回一个原字符串的复制字符串,不影响原字符串

1:从index开始截取,到字符串末尾结束

2:begin end 从begin开始结束到end结束,不包含end ,-1代表最后一个字符

  • 6.substr:字符串截取

0:返回一个原字符串的复制字符串,不影响原字符串

1:从index开始截取,到字符串末尾结束

2:begin num 从begin开始截取,截取num个字符

  • 7.substring:字符串截取 同slice相像

0:返回一个原字符串的复制字符串,不影响原字符串

1:从index开始截取,到字符串末尾结束

2:begin end 从begin开始结束到end结束,不包含end,当end为负数时,改变截取方向

  • 8.indexOf():indexOf():全等比较,查找数组元素,默认从前向后查找,只找一个元素,对于找到的元素,返回元素的下标;对于找不到的元素,返回-1.
  • 9.lastindexOf():查找数组元素,从后向前查找
  • 10.trim():去掉字符串的前后空格,没有参数
  • 11.toLowerCase():将字符串转换为小写
  • 12.toUpperCase():将字符串转换为大写
  • 13.search():搜索字符串 参数为字符串/正则表达式 找到返回下标,没找到返回-1,只能找到一个
  • 14.replace(匹配字符串/正则表达式,插入的值):替换字符串
  • 15.match():匹配字符串 参数字符串、正则表达式 匹配成功,返回一个匹配成功的字符串;匹配失败,返回null
  • 16.split():分割字符,将分割后的字符组成一个数组:将字符串转换为数组

正则表达式

1.创建方式

1) 正则表达式字面量
var pattern = /s$/;
2) RegExp()构造函数
var pattern = new RegExp("s$");

2.修饰符

g global全局 例如var p1=/hello/g; RegExp("hello","g");

i ignore case不区分大小写

m multiline多行

3.字符类

[xyz]一个字符集合,也叫字符组。匹配集合中的任意一个字符。你可以使用连字符‘-’指定一个范围。[0-9][a-z]

[^xyz]一个反义或补充字符集,也叫反义字符组。也就是说,它匹配任意不在括号内的字符。你也可以通过使用连字符'-'指定一个范围内的字符。必须在中括号里面添加^,在中括号外添加^,是以某一字符开头。

4.数量词 一定要用到子表达式之后

例如 var p1=/ \d{1,5} /g; 匹配数字,最少一次,最多5次

5.重复方式

贪婪 匹配重复字符时是尽可能多的匹配,默认{1,4}

非贪婪 匹配重复字符时是尽可能少地匹配,在待匹配的字符数量词后跟随一个问号即可

例如:{1,4}?

/a+/可以匹配一个或者多个连续的字母a,当使用“aaa”作为匹配字符串时正则表达式会匹配它的三个字符。

/a+?/可以匹配一个或者多个连续的字母a,但是尽可能少地匹配。只能匹配第一个a

6.选择

使用字符 "|" 分割供选择的字符。选择项的尝试匹配次序是从左到右,直到发现了匹配项,如果左边的选择项匹配,就忽略右边的匹配项,即使它产生更好的匹配。/ab|cd|ef/ 可以匹配 "ab"或者"cd"或者"ef"

7.分组

"()"作用:把单独的项组合成子表达式 以便可以像处理一个单元那样用"|""*""+""?"对单元内的项进行处理。

8.边界
9.原型属性
exec: 校验字符串是否有符合条件的字符串,如果有,返回数组,数组中存放的是符合条件的字符串,如果没有,返回null
例:
var pattern = /abc/gim;
var str = 'ababc acd abcd wee';
console.log(pattern.exec(str)); //['abc',index:2,input:'ababc acd abcd wee',groups:undefined]
console.log(pattern.lastIndex); //5 也就是下一次检索位置从5号开始 没有g的情况下每一次都从0开始
str中有两个abc,怎么样可以拿到两个abc? 前提有g修饰符,且调用两次exec,没有g的话每一次都会从0开始查找
     var pattern = /abc(d|e)/img;
     var str = 'ababcs acb abcd weeabce abss'
     console.log(pattern.exec(str)); // ['abcd']
     console.log(pattern.exec(str)); // ['abce']
     循环调用exec方法,直到exec()==null就可以结束循环了

     如果想拿到abcd abce放在一个数组中,怎么实现?
     var pattern = /abc(d|e)/img;
     var str = 'ababcs acb abcd weeabce abss'
     var result; // pattern执行exec方法的结果
     var temp=[]; // 匹配到的字符串  记录
     while(result=pattern.exec(str)){
       //result取值可以是数组,可以是null
       //只要能进来循环体,那么result就是一个数组
       temp.push(result); // tmp就是一个二维数组 [ [],[] ]
     }
     console.log(temp);
10.原型方法

test: 校验字符串是否符合正则表达式模式,返回true/false

exec: 校验字符串是否有符合条件的字符串,如果有,返回数组,数组中存放的是符合条件的字符串,如果没有,返回null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值