正则

作者: 布丁点com | 来源:发表于2019-04-02 17:12 被阅读0次

    1️⃣横向模糊匹配

    横向模糊匹配指的是,一个正则可匹配的字符串的长度不是固定的,可以是多种情况。

    其实现的方式是使用量词。如{m,n},表示连续出现最少m次,最多n次。

    如/ab{2, 5}c/表示匹配这样一个字符串:第一个字符是“a”,接下来是2到5个字符“b”,最后是字符“c”。

    图1

    注意:上面用的正则是/ab{2,5}c/g,后面多了g,它是正则的一个修饰符。表示全局匹配,即在目标字符串中按照顺序找到匹配模式的所有子串,强调的是“所有”,而不只是“第一个”。g是单词global的首字母。

    2️⃣纵向模糊匹配

    总想模糊匹配指的是,一个正则匹配的字符串,具体到某一位字符时,它可以不是某个确定的字符,可以有多种可能。

    其实现的方式是使用字符组。如[abc],表示该字符是可以字符“a”,“b”,“c”中的任何一个。

    比如/a[123]b/可以匹配如下三种字符串:“a1b”、“a2b”、“a3b”。如下:

    图2

    3️⃣范围表示法

    比如[123456abcdefGHIJKLM],可以写成[1-6a-fG-M]。用连字符-来省略和简写。

    4️⃣排除字符组

    纵向模糊匹配,还有一种情形是,某位字符可以是任何东西,但不能是“a”,“b”,“c”。

    此时就是排除字符组(反义字符组)的概念。

    如[^abc],表示的是一个除“a”,“b”,“c之外的任意一个字符”。字符组的第一位放^(脱字符),表示求反的概念。

    5️⃣常见的简写样式

    \d  是[0-9]。表示是一位数字。

    \D 是[^0-9]。表示除数字外的任意字符。

    \w 是[0-9a-zA-Z_]。 表示数字、大小写字母和下划线。

    \W 是[^0-9a-zA-Z_]。非单词字符。

    \s 是[ \t\v\n\r\f]。表示空白符,包括空格、水平制表符、垂直制表符、换行符、回车符、换页符。

    \S 是[^ \t\v\n\r\f]。非空白符。

    . 是[^\n\r\u2028\u2029]。通配符,表示几乎任意字符。换行符、回车符、行分隔符和段分隔符除外。

    注:可以使用[\d\D]、[\w\W]、[\s\S]和[^]中任何的一个表示匹配任意字符。

    6️⃣量词简写

    {m,} 表示至少出现m次。

    {m} 等价于 {m, m}, 表示出现m次。

    ? 等价于{0,1},表示出现或者不出现。

    + 等价于{1,},表示出现至少一次。

    * 等价于{0,},表示出现任意次,有可能不出现。

    7️⃣多选分支

    一个模式可以实现横向和纵向模糊匹配。而多选分支可以支持多个子模式任选其一。

    具体形式如下:(p1|p2|p3),其中p1,p2和p3是子模式,用 |(管道符)分隔,表示其中任何之一。

    正则表达式位置匹配

    ^和$

    图3

    \b和\B

    \b是单词边界,具体就是\w和\W之间的位置,也包括\w和^之间的位置,也包括\w和$之间的位置。

    (?=p)和(?!p)

    (?=p),其中p是一个子模式,即p前面的位置。

    比如(?=l),表示“l”字符前面的位置。

    图4

    而(?!p)就是(?=p)的反面意思,比如:

    案例:

    ①数字的千分分隔符表示法

    图5

    ②验证密码问题

    密码长度6-12位,由数字、小写字符和大写字母组成,但必须至少包括2种字符。

    var reg = /((?=.*[0-9])(?=.*[a-z])|(?=.*[0-9])(?=.*[A-Z])|(?=.*[a-z])(?=.*[A-Z]))^[0-9A-Za-z]{6,12}$/;

    相关文章

      网友评论

          本文标题:正则

          本文链接:https://www.haomeiwen.com/subject/awdcbqtx.html