js知识点梳理-RegExp

137 阅读2分钟

正则

正则表达式

1.最简单的正则表达式

关键字原文本身/原文/ig

i:忽略大小写

g:global全局

2.备选字符集

【一个备选字符集】规定了【一位字符】可用的备选字符列表/[备选字符集]/

注意:

  • 一个[]只能匹配一位字符

  • 正则默认只要满足后,就不再管理后续操作,用户可任意输入

    • 解决:/^[备选字符集]$/ 要求从头到尾完全匹配
  • 若备选字符集中,unicode号连续,中间部分可用-代替

//例

[0123456789] => [0-9]
一位字母 [a-zA-Z]
一位汉字 [\u4e00-\u9fa5]
一位数字、字母、下划线 [0-9a-zA-Z_]
  • 除了x以外,其他都可以 [^x]

3.预定义字符集

已提供的常用字符集的简化

  • 一位数字 [0-9] \d

  • 一位数字、字母、下划线 [0-9a-zA-Z_] \w

  • 一位空白字符(\t \n 空格) \s

  • 一位除换行外的任意字符 .

不管是备选字符集还是预定义字符集,一个字符集都只能控制一个字

4.量词

规定了一个字符集出现的次数

  • 有明确数量

    • 字符集{n,m} 最少n次,最多m次

    • 字符集{n,} 最少n次,多列不限制

    • 字符集{n} 只能n次

  • 无明确数量

    • 字符集? 前面相邻的字符集可有可无,但最多一次

    • 字符集* 前面相邻的字符集可有可无,且不限制数量

    • 字符集+ 前面相邻的字符集至少一次,且不限制数量

5.指定匹配的位置

^开头 &结尾

注意:若^和&同时出现,前加^、后加&,要求从头到尾完全匹配

6.选择和分组

  • 选择|:在多个规则中,选择满足的规则执行 规则1|规则2

  • 分组() (规则1|规则2)

//例
/^\d|\w$/  //开头数字,结尾空格
/^(\d|\w)$/  //从头到尾,只能是空格或者数字
//电话的正则
/^(\+86|0086)?\s*1[3-9]\d{9}$/

7.预判

用于密码强度

//例
(?![0-9]+$)  //不能全由数字组成
(?![0-9A-Z]+$)  //不能全由数字或大写字母组成,也不能只由数字或大写字母组成

字符串中支持正则的API

1.分割

var arr=str.split(reg)

2.替换

  • 基本替换法 var newStr=str.replace(reg,"新内容")

默认只会替换第一个关键字,若想全部替换,结尾添加g

替换的内容只能是一个固定的新内容

  • 高级替换法
var newStr=str.replace(正则,function(a,b,c){
    console.log(a);//正则匹配到的关键字
    console.log(b);//正则匹配到的关键字下标
    console.log(c);//原文本身
    return a.length==2?"**":"***";
})
  • 格式化
//根据身份证号匹配出生日

var str="123123123412234567";

var newStr=str.replace(/(\d{6})(\d{4})(\d{2})(\d{2})(\d{4})/,function(a,b,c,d,e,f,g,h){
    console.log(a);//正则匹配到的关键字
    console.log(b);//是第1个分组获取到的内容
    console.log(c);//是第2个分组获取到的内容
    console.log(d);//是第3个分组获取到的内容
    console.log(e);//正则匹配到的关键字的下标
    console.log(f);//原文本身
    return c+"年"+d+"月"+e+"日";
})
	
console.log(newStr);

正则对象

1.创建正则对象

  • 直接量方法 var reg=/正则表达式/后缀

  • 构造函数:拼接正则情况使用 var reg=new RegExp("正则表达式","后缀")

2.方法

var bool=reg.test(user);结果:true/false