js正则表达式

正则表达式主要用来检索替换文本,和表单验证、屏蔽敏感词等。

创建正则表达式两种方法

1 字面量创建   var  reg = / js / ig       ig为修饰符,i是忽略大小写 g是当前字符串的所有字符

2 new 构造函数创建  var  reg = new Regexp()

字符串这样写  var reg = new RegExp('abc','ig');

常规字面量这样写 var reg = new RegExp(/abc/ig);或var reg = new RegExp(/abc/,‘ig‘)

字符串利用正则表达式检索方法

1. 字符串替换:字符串.replace(‘旧字符’/正则,‘新字符’/函数)  / 为或者的意思

// var a = 'web123web456WEB789';
// var reg = /web/ig;
// console.log(a.replace(reg,'***'));
// 控制台输出***123***456***789
// 忽略大小写,全部web被更换为***
// replace返回值为替换后的新字符串


var a = 'web123web456WEB789';
var reg = /web/ig;
console.log(a.replace(reg,function (s) { 函数有形参,形参为符合正则条件的字符
    console.log(s);  控制台输出三个web,s值为符合正则条件的字符
    return '&&&'  return的值就是替换内容的新字符
}));
// 控制台输出 &&&123&&&456&&&789

 2.字符串分割:字符串.split(‘分隔符’/正则)  / 为或者的意思   分割字符串返回新数组

var a = 'web123web456WEB789';
var reg = /web/i;
console.log(a.split(reg));
// 控制台输出(4) ["", "123", "456", "789"]
// 如果正则后边不加i 大写的web 不会被分割 
// 所有被替换的web都要加逗号作为数组的项,所以是三个逗号四项
// split返回值被分割后的新数组,返回的是数组[]

 3.字符串查找:字符串.search(正则)  查找符合正则的字符,找到返回下标,找不到返回-1

var a = 'web123web123WEB789';
var reg = /123/i;
console.log(a.search(reg));
// 控制台输出 3  123的起始下标为3,返回查找到的结果的第一项的下标
// 后边的i可写可不写 写了不会起作用,因为查找到第一个符合的项就会返回下标不在查找 
// search返回值找到返回下标,找不到返回-1

4.字符串查找:字符串.match(正则)  查找符合正则的字符,找到返回符合条件的字符组成的数组

var a = 'web123web123WEB789';
var reg = /123/ig;
console.log(a.match(reg));
// 控制台输出 ["123", index: 3, input: "web123web123WEB789", groups: undefined]
// 如果正则不加g只查找符合的正则的第一项  
// 返回的数组包括 符合正则的字符  字符所开始的下标 和原数组
// 如果加g 输出 (2) ["123", "123"]
// 返回的是符合正则的字符组成的新数组
// match返回值符合正则的字符组成的新数组

正则的方法

惰性查找: 一次只匹配一个 下一次再找下一个

exec: 返回匹配到的项 组成新数组返回

正则.exec(字符串);

不加g: 每次查找都从0开始

加g: 从上一次匹配到的结果的下一个字符开始查找

var a = 'web123web123WEB789';
var reg = /123/ig;
console.log(reg.exec(a));
console.log(reg.lastIndex);  // 输出6 表示下次从下标为6的字符开始查找

// 控制台输出 ["123", index: 3, input: "web123web123WEB789", groups: undefined]
// 如果正则不加g每次查找都从0 开始  加g从上次查找到的结果的后边的字符开始查找
// 返回的数组包括 符合正则的字符  字符所开始的下标 和原数组
// 返回值符合正则的字符组成的数组  类似于match不加g

test

test: 返回是否有符合正则的字符 有返回true 没有返回false

正则.test(字符串);

不加g: 每次查找都从0开始 加g: 从上一次匹配到的结果的下一个字符开始查找

var a = 'web123web123WEB789';
var reg = /123/ig;
console.log(reg.test(a));
console.log(reg.lastIndex);  // 输出6 表示下次从下标为6的字符开始查找

// 控制台输出 true  主要用来校验表单看用户输入的密码手否符合正则
// 如果正则不加g每次查找都从0 开始  加g从上次查找到的结果的后边的字符开始查找
// 返回tru 或 false

元字符

   .  点 匹配除换行以外的任意字符;

      字符集: 不需要加任何引号、分隔
       [ ]: 字符集, 表示匹配字符集中的任意一个字符
       [^]: 非字符集, 表示匹配除字符集以外的任意一个字符
       0-9 0-9之间的每一个数字
        a-z a-z之间的每一个字母
        A-Z A-Z之间的每一个字母 

     \d: 数字0-9
     \D: 除数字以外的任意字符

 \w: 表示匹配字母、数字、_任何一个
   \W: 表示匹配除字母\数字\_以外的任何一个

 \s: 匹配空格
   \S: 匹配除空格外的任何一个

 \b: 单词边界   边界, 一个字母有2个边界
  \B: 非单词边界

 开头、结尾 整个字符串来做判断 
  一个字符串只有一个开头(第一个字符) 一个结尾(最后一个)
  ^a: 以a为开头
  a$: 以a为结尾

量词

量词: 单位

a?

a? : 匹配是0个或者1个a

a*

a* : 匹配是0个或者 连续 的多个a 尽可能多的去匹配

a+

a+: 匹配 连续 的多个a 尽可能多的去匹配 至少匹配1位

a{m,n}

{m,n} : 匹配至少m次,最多n次 尽可能多的去匹配 m,n中间不能加空格

{m,} : 匹配至少m次 逗号不能省略

{m} : 匹配 m 次

或和

|或

a|b : 或 匹配a或者b

()和

() : 分组

每个分组的匹配结果都会在结果中展示, 数组第2项以后的就是分组的匹配结果

分组结果: $1 $2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值