简单的正则表达式梳理 2018-07-14

在正则表达式中,如果直接给出字符,就是精确匹配。/1w!/


用\d可以匹配一个数字,\w可以匹配一个字母或数字

    所以:

            '00\d'可以匹配'007',但无法匹配'00A';

            '\d\d\d'可以匹配'010';

            '\w\w'可以匹配'js';


    可以匹配任意字符

    所以:

            'js.'可以匹配'jsp'、'jss'、'js!'等


要匹配变长的字符,在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符:

    所以:

            \d{3}\s+\d{3,8}表示:

            \d{3}表示匹配3个数字,例如'010';

            \s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配' ','\t\t'等;

            \d{3,8}表示3-8个数字,例如'1234567'


特殊字符,在正则表达式中,要用'\'转义

     所以:

            \d{3}\-\d{3,8}  匹配  '010-12345'


要做更精确地匹配,可以用[]表示范围

    例如:

            [0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线;

            [0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100','0_Z','js2015'等等;

            [a-zA-Z\_\$][0-9a-zA-Z\_\$]*可以匹配由字母或下划线、$开头,后接任意个由一个数字、字母或者下划线、$组成的字符串,也就是JavaScript允许的变量名;

            [a-zA-Z\_\$][0-9a-zA-Z\_\$]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)


A|B可以匹配A或B,所以(J|j)ava(S|s)cript可以匹配'JavaScript'、'Javascript'、'javaScript'或者'javascript'


^表示行的开头,^\d表示必须以数字开头


$表示行的结束,\d$表示必须以数字结束


除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用()表示的就是要提取的分组(Group)

    例如:

            ^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码:

            var  re =/^(\d{3})-(\d{3,8})$/;

                    re.exec('010-12345');// ['010-12345', '010', '12345']

                    re.exec('010 12345');// null


贪婪匹配

        需要特别指出的是,正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符。

非贪婪匹配(也就是尽可能少匹配)

        加个?就可以让\d+采用非贪婪匹配


全局搜索

最常用的是g,表示全局匹配

    例如:

            /test/g

        注:全局匹配类似搜索,因此不能使用/^...$/,那样只会最多匹配一次


正则表达式还可以指定i标志,表示忽略大小写,m标志,表示执行多行匹配


如果你经常遇到正则表达式的问题,你可能需要一本正则表达式的参考书。

\033[##m

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 初衷:看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印...
    DCbryant阅读 4,075评论 0 20
  • 几个正则表达式编辑器 Debuggex :https://www.debuggex.com/ PyRegex:ht...
    没技术的BUG开发攻城狮阅读 4,624评论 0 23
  • 推荐几个正则表达式编辑器 Debuggex :https://www.debuggex.com/ PyRegex:...
    木易林1阅读 11,569评论 9 151
  • 在正则表达式中,如果直接给出字符,就是精确匹配。用\d可以匹配一个数字,\w可以匹配一个字母或数字,所以: '00...
    再好一点点阅读 170评论 0 0
  • Python中的正则表达式(re) import rere.match #从开始位置开始匹配,如果开头没有则无re...
    BigJeffWang阅读 7,188评论 0 99