正则表达式、匹配字符规则、修饰符

1、正则表达式:操作字符串
正则表达式(regular expression)是一个描述字符模式的对象。
ECMAScript 的 RegExp 类 表示正则表达式,
而 String 和 正则表达式都定义了进行强大的【模式匹配】和【文本检索】与【替换】的函数。

  2、创建正则表达式;
        2.1   构造函数创建-参数1代表规则 参数2代表修饰符(忽略大小写 m:多行匹配  g:全局匹配)
        若果存在输入ture,否则输出fales
        var reg = new RegExp('abc','i');//创建一个对象

        //text(str):字符串中匹配符合正则规则的字符串是否存在(包含),
        console.log(reg.text('abchelloabc'))//true
        console.log(reg.text('ah1bchelh2loabc'))//false

        //2.2   构造函数创建--省略new
        var reg = RegExp('hi','i');//创建一个对象
        console.log(reg.text('hilloabc'))//true


        //2.3   字面量创建--正则一定是字符串,不能加变量,更不能加引号
        var reg = /hi/i;
        console.log(reg.text('hiabc'))

匹配字符规则:
[]:匹配某一个范围中的一个字符。
[a-z];匹配所有的小写字母的一个字符
[A-Z];匹配所有的大写字母的一个字符
[a-zA-Z]:匹配所有字母中的一个字符
[a-zA-Z0-9]:匹配所有字母和数字中的一个字符
var reg = /[2-9][a-z]/i;
console.log(reg.test(‘2abc’))//匹配数字2-9之间的任意一个。包括2,9
1、[^a-z]:取反,不包括小写字母。

 var reg = /[^a-z]/i; //非小写字母
        console.log(reg.test('13'));

2.\d \D
\d:相当于[0-9]匹配数字0-9之间的任意一个.
\D:相当于[^0-9] 匹配非数字 .

var reg = /\d/;
        var reg = /\D/;
        console.log(reg.test('2'));

3.\w \W
\w:相当于[a-zA-Z0-9_] 匹配字母数字和下划线。
\W:相当于[^a-zA-Z0-9_] 匹配非字母数字和下划线。

 var reg = /\w/;
        var reg = /\W/;
        console.log(reg.test('2'));

4.\s:匹配空白字符,空格字符。

5.行首行尾匹配
从最开始的位置一直匹配到最后的位置,等价匹配
^ 行首匹配 和 中括号里面的取反
$ 行尾匹配

 var reg = /^hello$/;
        console.log(reg.test('hello'));//等价匹配 true

6.重复的字符
?:匹配前面的字符0或1个

 var reg = /^a?$/;//匹配0或1个a
        console.log(reg.test(''));//ture
        console.log(reg.test('a')); //true
        console.log(reg.test('aa')); //false

*:匹配前面的字符0或任意多个

 var reg = /^a*$/;//匹配0或任意多个a
        console.log(reg.test(''));//ture
        console.log(reg.test('a'));//ture
        console.log(reg.test('aa'));//ture
        console.log(reg.test('aaa'));//ture

+:匹配前面的字符1或任意多个

var reg = /^a+$/;//匹配1或任意多个a
        console.log(reg.test('')); //false
        console.log(reg.test('a')); //true
        console.log(reg.test('aaaa')); //true
        console.log(reg.test('aaaac')); //false

():分组

  var reg = /^abc+$/; //匹配ab和一个或者多个c
        console.log(reg.test('abc'));//true
        console.log(reg.test('abccc'));//true
        console.log(reg.test('abcabc'));//false
        var reg1 = /^(abc)+$/;  //匹配一个或者多个abc
        console.log(reg1.test('abc'));//true
        console.log(reg1.test('abccc'));//false
        console.log(reg1.test('abcabc'));//true

{}:数量范围。
a{5} 匹配5个a.
a{5,10} 匹配最少5个,最多10.
a{5,} 匹配最少5个.

 var reg = /^(abc){3}$/; //匹配三个abc
        console.log(reg.test('abcabcabc'));//ture
        console.log(reg.test('abcabc'));//false
        console.log(reg.test('abcabcabcabc'));//false

        var reg = /^(abc){2,4}$/;//
        console.log(reg.test('abcabcabc'));//true
        console.log(reg.test('abcabcabcabc'))//ture
        console.log(reg.test('abcabcabcabcabc'))//false
        console.log(reg.test('abc'))//false

         var reg = /^(abc){2,}$/;  //匹配3个abc
        console.log(reg.test('abcabcabc'));//true
        console.log(reg.test('abcabc'));//true
        console.log(reg.test('abcabcabcabc'));//true
        console.log(reg.test('abc'));//false
        console.log(reg.test('abcabcabcabcabc'));//true

7.替代字符-经常和()配合使用

  var reg = /^(who|what|where)$/;
        console.log(reg.test('what'));//true
        console.log(reg.test('whata'));//false
        console.log(reg.test('awhat'));//false
        console.log(reg.test('where'));//true
        console.log(reg.test('who'));//true

3、修饰字符
i:忽略大小写

 var reg = /aBc/i;
        var str = 'aabcdbfg';
        console.log(reg.test(str));//ture

g:全局匹配
字符串的方法:使用 replace(正则表达式,替换的字符) 替换匹配到的数据

 var reg = /[a-z]/g; //匹配任意一个小写字母
        var str = '1aa2b3c4d5e';
        console.log(str.replace(reg,'*'));//1**2*3*4*5*

        var reg = /[a-z]+/g;
        var str = '1aaa2bbccss3eeee4ffff';
        console.log(str.replace(reg,"#"));//1#2#3#4#

        var reg = /[a-z]+/ig;
        var str = '1aAaAa2bbBccBbb3eeeEEee4fffFFfff5';
        console.log(str.replace(reg, '*'));//1*2*3*4*5


m:多行匹配

 var str = 'ab\ncd\nefg';
        var reg = /^a/;
        var reg1 = /^e/m;  //多行匹配
        var reg2 = /b$/m;
        console.log(reg.test(str));//true
        console.log(reg1.test(str));//true
        console.log(reg2.test(str));//true

4、正则和字符串合作的几个方法
1.使用 replace 替换匹配到的数据,2个参数:参1代表正则,参2代表用来替换的字符
1.1字符串过滤(敏感词过滤)

var str = '这件衣服是你妈的还是你妹的我猜是你大爷的';
        var reg = /妈|妹|大爷/g;
        console.log(str.replace(reg,'*'));//这件衣服是你*的还是你*的我猜是你*的

1.2字符串首尾去空格–字符串的方法–trim()
将空格替换成空隙

var str = '   abc    de   fgh  ';
        console.log(str);//   abc    de   fgh  
        console.log(str.trim());//abc    de   fgh

        function copytrim (str){//自己封装的函数
            return str.replace(/^\s+|\s+$/g, '');//将行首或者行尾的空格替换成空隙。
        }
        console.log(copytrim(str));

1.3统计字符长度(中文算2个字符,英文算1个字符)

 var str = 'abc你好abc';
        console.log(str.length);//8
        //匹配中文的正则 : [\u4e00-\u9fa5]
        console.log(str.replace(/[\u4e00-\u9fa5]/g, '**').length);
        //采用任意的两个符号替换一个中文。
  1. 使用 match(正则) 方法获取匹配内容,返回数组
    exec():正则下面的方法,作用和上面相似,和全局没有关系。
 var str = '124daff1223jfk32478fadshf324789hsjfhjkds23847';
        console.log(str.match(/\d/g));//["1", "2", "4", "1", "2", "2", "3", "3", "2", "4", "7", "8", "3", "2", "4", "7", "8", "9", "2", "3", "8", "4", "7"]
        console.log(str.match(/\d+/g));// ["124", "1223", "32478", "324789", "23847"]

  		console.log(str.match(/\d+/));
        console.log(/\d+/.exec(str));//match可以取代exec方法。
  1. 使用 split 将字符串转换成数组。
 var str = 'a1b2c3d4e5f';
        console.log(str.split('3'));//["a1b2c", "d4e5f"]
        console.log(str.split(/[0-9]/g));//["a", "b", "c", "d", "e", "f"]
  1. 使用 search 来查找匹配数据,和全局没有关系,查找第一个匹配值的位置。(-1)
  var str = 'abcdabcd';
        console.log(str.search('b'));//1
        console.log(str.search(/b/g));//1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值