计算机要从娃娃抓起---------正则表达式(学习笔记一)

最后都变了- 提交于 2020-03-04 13:37:03

这篇主要是将正则,学习新东西,我记得老师说过一个好方法,要带着疑问去学习,不能光看理论,你要一直想着这个东西是干嘛的,怎么用,用在哪,我觉得的说的很好.所以在看的时候要一直想着这些问题.

这是本喵的学习笔记可能有很多不足之处,希望大家能多提意见!

开始吧,上课!

                                                                                                              t@i$o{7l${eq6`r1~m6p$ds

什么是正则表达式?

    正则:也叫规则,能让计算机读懂人类的规则.

    ( 注意:正则都是都是操作字符串的)

正则的写法:

       var re =/a/;     这里写两个//的话系统会认为这是注释,所以最好写点东西.

       var re = new RegExp('a');

       正则中默认是区分大小写的,如果不区分大小写的话,在正则的最后加标识i

正则默认:正则匹配成功就会结束,不会继续匹配.如果想全部查找就要加标识   g(全局匹配)

常用方法:

1)

        test:正则去匹配字符串,如果匹配成功就返回真,失败返回假.

        test的写法:正则.test(字符串 );

        eg:

            var str = 'abcddef';

            var re = /b/;

            alert(re.test(str));

            这时候就会返回ture,因为需要匹配的b在字符串中;

            如果匹配的bc呢?(也会返回ture)

            如果匹配的bd呢?(会返回false,因为bd不是一个整体)

        转义字符:

                \s :空格

                \S:非空格

                \d:数字

                \D;非数字

                \w:字符(字母,数字,下划线)

                \W:非自字符

   2)

           search:正则去匹配字符串,如果匹配成功,就返回成功的位置,如果匹配失败就返回-1.

           search的写法:字符串.search(正则);

            eg:

                var str = 'abcdef';

                var re  = /b/;

                alert(str.search(re));

                很明显找到了所以返回-1;

                如果这样写

                       var re = /B/

                再运行

                        str.search(re);

                返回的是-1,可以看出正则中默认是区分大小写的;

      3) 

            match:正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null;

            match的写法:字符串.match(正则);

            eg:

                var str = 'jdl46d4a6sd464sd4w4a4f6';

                var re = / \d /;

                alert(str.match(re));     //[4];

                只有一个[1]后面还有很多数字并没有添加到数组中,为什么呢?

                这里又是正则的默认的行为

                正则默认:正则匹配成功就会结束,不会继续匹配.如果想全部查找就要加标识   g(全局匹配)

                这样正则就要写成如下形式:

                 var re = / \d /g;

                var str = 'jdl46d4a6sd464sd4w4a4f6';

              var re = / \d /g;

                alert(str.match(re));     //[4,6,4,6,4,6,4,4,4,4,6];

                这里每个又会分开添加到数组中,如果我想连续的数字组成一组,要怎末解决?

                一般可能会想到

                var re = / \d\d /g;

                这样写

                g77q@ckz`~evxtd@u20h~1x

                那要是数字是几位不确定呢,这样写.....有瑕疵

                这时候就要用到量词了(我的天呐,这么神奇吗)

                量词:匹配并不确定的位置

                +  :至少出现一次

              var re = / \d+ /g;这就是说数字至少出现一次

       4)

            replace: 正则去匹配字符串,匹配成功的字符去替换成新的字符串

            replace的写法: 字符串.replace(正则,新的字符串)

            eg:

            var str = 'aaa';

            var a = /a/;

            str = str.replace(re,'b');

            alert(str);

            结果是'baa';

            因为程序匹配到第一个a后把第一个a替换成b;如果我想吧所有的a替换成b呢?应该怎么做?

            var re = /a/g;

            那么所有的a替换成一个b呢?可以自己试一下可以依靠前面的知识实现;

         后面我会写一些实际的栗子,虽然大部分是搬运的.因为是学习笔记,后续的话我会做些原创的文章虽然不一定是技术

                                                                                                                     9-15101QHS5

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!