热点新闻
正则表达式--位置
2023-07-17 12:38  浏览:162  搜索引擎搜索“爱农网”
温馨提示:信息一旦丢失不一定找得到,请务必收藏信息以备急用!本站所有信息均是注册会员发布如遇到侵权请联系文章中的联系方式或客服删除!
联系我时,请说明是在爱农网看到的信息,谢谢。
展会发布 发布信息 广告合作 软文发布

前言

    正则除了匹配字符外,也可以匹配位置,位置即字符之间的间隔,如'it',的i和t之间即是一个位置

表现形式

    ^:开头

    $:结尾

    \b:单词边界(\w与\W、\w与^或$之间)

    \B:对\b取反

    (?=l):先行断言

    (?!l):先行否定断言

^

    如果将it按位置拆分,则为''+i+''+'t'+''

    ^表示第一个位置,即i前边的引号表示的位置

    ^a,表示以a开头,即第一个位置后的字符是a






$

    与^概念差不多,只不过他表示最后一个位置






\b与\B

    匹配\w与\W、\w与^、\w与$之间的位置




(\B对\b取反)

先行断言

    语法中的p是一个子模式,即找到符合该模式的前一个位置






先行否定断言

    对先行断言取反,如下:取所有非字符边界的位置






    此处和\B是一样的






示例

    不匹配任何东西

        分析:

            ^匹配开头的位置,那如果强制让开头的位置去匹配一个字符,不就永远匹配不到了!

            不能使用[^.]来表示排除任意一个,因为在[]中的.相当于是被转译过的,并不代表任何字符

        结果:






    数字的千位分隔符表示法

        输入:

            '12345678'

        分析:

            使用\d{3}匹配三位数字

            我们要的是其前一个位置,故使用先行断言,找到'1'+''+'2'+''+'3'+''+'4'中1和2中间的位置,即(?=\b{3})

            找出所有组的前一个位置:(?=(\d{3})+)

            匹配到结尾:$能匹配结尾,但是会判断前一个字符,故使用+\b或*\b更好

        结果:






        输入:

            '123456789'

        分析:

            上一步我们找出了所有三位一组的位置,这其中包含了以123为一组的前一个位置,该位置即\b,故排除(\B或(?!\b))即可






    数字、大小写字母组成6-12位密码串,且至少要包含其中两种

        分析:

            使用[\da-zA-Z]{6,12}标识合法的输入值和长度

            以某一种类型(数字)作为出发点,从头到结束位置找到符合要求的字符的前一个位置

                以数值作为出发点:.*\d

                从头开始:.^

                其前一个位置:(?=.*\d)

            最后,以第二步找到的位置作为起始点,看其后的字符是否符合要求






            最后,使用|做扩展






发布人:b33d****    IP:139.201.44.***     举报/删稿
展会推荐
让朕来说2句
评论
收藏
点赞
转发