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)
  • 相关阅读:
    679 怎样杀死害虫?(对付一个系统最好的方式是“围城必阙”)
    678 "流浪地球"为什么是个好地方?(系统越复杂拥有好运气的机会也就越大)
    677 人类为什么会养猫?(做一件事理性的原因的背后往往还隐藏着自己都不曾发现的感性原因)
    职场人必知的三原则
    677 怎样当一个少数派?(越在意,越出众)
    675 为什么会有“黑天鹅”?(行为和对行为后果的负责与否决定了很多黑天鹅出现概率)
    不做特殊论者(没有所谓的理所当然,你所谓的成功很有可能只是因为运气)
    事实和观点(就事论事,事实有真假,观点无对错)
    一个程序员的价值观总结
    669 创新也是搞政治?(如何创新)
  • 原文地址:https://www.cnblogs.com/ldcheng/p/7381584.html
Copyright © 2011-2022 走看看