美文网首页
正则表达式

正则表达式

作者: 疯子张 | 来源:发表于2019-05-14 15:24 被阅读0次

    正则表达式在生活包括程序中都有一定的应用

    正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。


    正则表达式的应用场景

    • 用于爬虫
    • 用于手机号等的验证
    • 用于日常文字以及图片的处理
    • 用于筛选以及利用数据等

    正则表达式的创建

    • 用构造函数的形式来构造一个正则规则
    var reg = new RegExp(***);
    
    • 用字面量的形式创建正则规则
    var reg =  /****/;
    

    正则表达式中的字符

    • ^ 匹配输入字符串的开始位置。

    • $ 匹配输入字符串的结束位置。

    • ? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 。

    • +匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。

    • \d 匹配一个数字字符。等价于 [0-9]。

    • \D 匹配一个非数字字符。等价于 [^0-9]。

    • \w 匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'。

    • \W 匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'。

    • \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。

    • \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。

    • \b 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。

    • \B 匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。

    • [^xyz] 负值字符集合。匹配未包含的任意字符。

    • [a-z] 字符范围。匹配指定范围内的任意小写字母字符。

    • . 匹配除了换行符的任意字符 (英文下的实心句号)

    • | 相当于或

    • 量词符号: {n}重复n次 , {n,m} n个到m个 , * 0个或者任意的一个, ? 0个或者一个 , + 至少一个

    正则表达式的贪恋与禁止贪婪
    • 贪婪模式 : (.*)尽可能多的匹配(最长的结果)
    • 非贪婪模式 : (.*?) 讲究就近原则

    正则表达式的运算符

    正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。相同优先级的从左到右进行运算,不同优先级的运算先高后低。

    运算符优先级排序
    • \ 转义符
    • (), (?:), (?=), [] 圆括号和方括号
    • *, +, ?, {n}, {n,}, {n,m} 限定符
    • ^, $, \任何元字符、任何字符 定位点和序列(即:位置和顺序)
    • | 替换,"或"操作字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"。

    正则表达式的应用

    • Email地址:^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$
    • 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
    • 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
    • 身份证号(15位、18位数字),最后一位是校验位,可能为数字或字符X:(\d{15}$)|(^\d{18}$)|(\d{17}(\d|X|x)$)
    • 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
    • HTML标记的正则表达式:<(\S?)[^>]>.?|<.? /> ( 首尾空白字符的正则表达式:^\s|\s或(^\s*)|(\s*) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)
    • IP地址:((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))
    • xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\.[x|X][m|M][l|L]$
    • 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)

    相关文章

      网友评论

          本文标题:正则表达式

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