zoukankan      html  css  js  c++  java
  • 正则

    正则里面的 分组、字符匹配、前瞻、后顾 有时间了解了解
     
    w{3} 是什么意思
    w 大小写字母、数字、下划线。
    {3} 代表只有3个匹配字符。
    w{3} 代表只有3个匹配的字母、数字、下划线。
     
    javaScript中用来匹配正则的函数是什么?
    match() return 一个数组。
     
    修饰符 g 是什么意思?
    g代表匹配全局,只有在javaScript中有 php、java没有。
     
    w+ 和 w有啥区别?
    前者匹配多次或者多个 大小写字母、数字、下划线;后者只匹配一个或者一次。
     
    W 大写W代表非字母、数字、下划线。
     
    经常会发现javaScript中有个test()函数,有什么作用?
    用于检测一个字符串是否匹配某个模式,如果匹配返回true,不匹配返回false。
     
    在每个正则表达式的最后加上一个修饰符 i 代表忽略大小写
    例如:/aaa/i 取出所有的aaa 忽略大小写。 javaScript、php 都可以使用
    php中 也可以写成 /(?i)aaa/
     
    [A-Z]代表匹配从A到Z的一个大写字母。
    [a-z]代表匹配从a到z的一个小写字母。
    + 是匹配多次的意思。
     
    javaScript中的 中文:
    第一个 u4e00 最后一个 u9fa5 [\u4e00-\u9fa5]
    php中的 中文:
    第一个 x{4e00} 最后一个 x{9fa5}
    所以在php中匹配中文要这么写 [x{4e00}-x{9fa5}] 并必须加上"u"修饰符 字符串如果是utf-8 那么必须要加上u修饰符 /[x{4e00}-x{9fa5}]/u
     
    ^ 代表匹配一行的开头。
    $ 代表匹配一行的结尾。
    . 代表除了 之外的 任意字符 后面加个 + 你懂得
    () 正则表达式中的小括号的作用是对字符进行分组,并保存匹配的文本,与位于小括号之间的模式匹配的内容都会被捕获。我们可以认为小括号里面的内容可以被取出来。
    () 小括号还有另外的一个意思 就是在连续字符可以作为多选进行匹配
    [] 是范围
    在()里面加 ?: 代表这个小括号里面的内容不进行提取
    在()后面加? 代表可有可无
     
    ?: 代表 0个或者1个
    +: 代表 1个或者多个
    *: 代表 0个或多个
     
    修饰符 is
    1、i 代表不区分大小写
    2、s 加上这个修饰符就代表所有了,默认是不包括换行符的,加上就代表包括换行符了
    3、修饰符大写U 代表使用非贪婪模式
     
    试着抓取页面 img的url
    $pattern="/<img.*?src=['|"]?(?<img>[^'">]*)['|"]?.*?[/]?>/i";
     
    试着过滤html中的注入
    $pattern="/</?(script|i?frame|style).*?>/is";
     
     
    年月日的正则
    31天月份
    0[13578]|1[02]
    30天的月份
    0[469]|11
    对于31天来说
    前10天|10-29天|30-31天
    0[1-9]|[12][0-9]|3[01]
    对于30天来说
    0[0-9]|[12][0-9]|30
    对于28天来说
    0[1-9]|1[0-9]|2[0-8]
    31天的月份+日期
    0[13578]|1[02]-0[1-9]|[12][0-9]|3[01]
    30天的月份+日期
    0[469]|11-0[0-9]|[12][0-9]|30
    28天的月份+日期
    02-0[1-9]|1[0-9]|2[0-8]
    把前面的合并起来 就解决了 月份跟日期 不考虑闰年 的正则
    ((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[0-9]|[12][0-9]|30))|(02-(0[1-9]|1[0-9]|2[0-8]))
    处理闰年
    闰年的定义:1、普通年能被4整除且不能被100整除的为闰年。如2004就是闰年,1900就不是闰年
    2、世纪年能被400整除的是闰年。如2000就是闰年,1900就不是闰年
    普通年 前面2位不用处理 处理后面2位
    ([0-9]{2})(0[48]|[2468][048]|[13579][26])
    世纪年 后面2位为00 得处理前面2位
    (0[48]|[2468][048]|[13579][26])00
    合并起来 就是闰年的 2月29
    ((([0-9]{2})(0[48]|[2468][048]|[13579][26]))|((0[48]|[2468][048]|[13579][26])00))-02-29
    0001年-9999年的正则
    [0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3}
    全部合并起来 YYYY-MM-DD的匹配正则
    (([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})|
    (((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[0-9]|[12][0-9]|30))|(02-(0[1-9]|1[0-9]|2[0-8]))))|
    (((([0-9]{2})(0[48]|[2468][048]|[13579][26]))|((0[48]|[2468][048]|[13579][26])00))-02-29)
  • 相关阅读:
    Jaeger Client Go 链路追踪|入门详解
    Go 中的 gRPC 入门详解
    【五分钟】001-数据结构概论
    【重榜?】.NET 6 Preview 1 开箱上手!带你尝试新版本更新!
    分布式链路追踪框架的基本实现原理
    【网摘】SQL练习题
    【数据库】E-R图向关系模型转换的规则
    6.0 《数据库系统概论》之关系数据库的规范化理论(数据依赖对表的影响[插入-删除-修改-冗余]、1NF-2NF-3NF-BCNF-4NF、函数依赖与多值依赖)
    【数据库】入门基础概念以及部分题目 记录 +答案+个人分析
    5.0 数据库完整性详解(PRIMARY KEY、REFERENCES、CHECK、CONSTRAINT、DOMAIN、TRIGGER)
  • 原文地址:https://www.cnblogs.com/ldcheng/p/7381584.html
Copyright © 2011-2022 走看看