正则匹配学习笔记

作者: Zoemings | 来源:发表于2017-10-10 17:47 被阅读63次

    匹配模式

    /i (忽略大小写)
    /g (全文查找出现的所有匹配字符)
    /m (多行查找)
    /gi(全文查找、忽略大小写)
    /ig(全文查找、忽略大小写)

    特殊字符

    限定符

    字符 描述
    * 匹配前面的子表达式零次或多次
    ? 匹配前面的子表达式零次或一次
    + 匹配前面的子表达式一次或多次
    {n} 匹配次数为n次
    {n,} 至少匹配n次
    {n,m} 最少匹配n次,最多匹配m次

    * + ? 限定符都是贪婪的,会尽可能多的匹配文字,只有在他们后面加一个?就可以实现非贪婪和最小匹配

    定位符

    字符 描述
    ^ 匹配输入字符的开始位置
    $ 匹配输入字符的结束位置
    \b 匹配一个字边界,即字与空格间的位置。
    \B 非字边界匹配
    \B 非字边界匹配
    \s 匹配任何空白字符,包括空格、制表符、换页符等等。
    \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
    \w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。
    \W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。
    [\b] 匹配一个退格符
    \cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M
    \d 匹配一个字数字符,/\d/ = /[0-9]/
    \D 匹配一个非字数字符,/\D/ = /[^0-9]/

    选择

    用圆括号将所有选择项括起来,相邻的选择项之间用|分隔。但用圆括号会有一个副作用,是相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种副作用。
    例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。

    字符 描述
    (pattern) 匹配并获取这一选择
    (?:pattern) 匹配但不获取匹配结果配,不进行存储供以后使用。使用 "或"来组合一个模式的各个部分是很有用。
    (?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串
    (?!pattern) 负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。
    [xyz] 字符集合。匹配所包含的任意一个字符。
    [^xyz] 负值字符集合。匹配未包含的任意字符。
    [a-z] 字符范围。匹配指定范围内的任意字符。
    [^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。

    示例

    一个单词连续出现的位置: /\b([a-z]+) \1\b/gi
    将一个URL解析为协议、域、端口及相对路径: /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/
    匹配空行: /^\s*$/
    匹配 HTML 标记: /<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/
    验证数字:^[0-9]*$
    验证n位的数字:^\d{n}$
    验证至少n位数字:^\d{n,}$
    验证m-n位的数字:^\d{m,n}$
    验证零和非零开头的数字:^(0|[1-9][0-9]*)$
    验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
    验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
    验证非零的正整数:^\+?[1-9][0-9]*$
    验证非零的负整数:^\-[1-9][0-9]*$
    验证非负整数(正整数 + 0) ^\d+$
    验证非正整数(负整数 + 0) ^((-\d+)|(0+))$
    验证长度为3的字符:^.{3}$
    验证由26个英文字母组成的字符串:^[A-Za-z]+$
    验证由26个大写英文字母组成的字符串:^[A-Z]+$
    验证由26个小写英文字母组成的字符串:^[a-z]+$
    验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
    验证由数字、26个英文字母或者下划线组成的字符串:^\w+$
    验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
    验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+
    验证汉字:^[\u4e00-\u9fa5],{0,}$
    验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
    验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
    验证电话号码:^(\d3,4|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
    验证身份证号(15位或18位数字):^\d{15}|\d{}18$
    验证一年的12个月:^(0?[1-9]|1[0-2])$正确格式为:“01”-“09”和“1”“12”
    验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 正确格式为:01、09和1、31。
    整数:^-?\d+$
    非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$
    正浮点数  ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
    非正浮点数(负浮点数 + 0)^((-\d+(\.\d+)?)|(0+(\.0+)?))$
    负浮点数 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
    浮点数  ^(-?\d+)(\.\d+)?$
    
    

    相关文章

      网友评论

        本文标题:正则匹配学习笔记

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