• 正则表达式


    正则表达式

    正则表达式的web开发中的常见场合

    1: 邮箱验证

    2:用户名验证

    3:替换字符串某一部分

    4:信息采集,用来分析有效的代码段

    .....

    .....

     

    正则表达式 规则表达式

    "一种有规律的字符串的描述"

     

    正则表达式是一门独立的知识,同样的一段描述,比如,对于email的匹配表达式,

    在不同语言是一样的但是,调用的函数可能不一样.

     

     

    学习正则表达式

    1: js,如果写一个正则表达式, "/正则表达式/" (不含双引号)

    2: js,用正则表达来验证字符串是否满足可以用  reg.test(String); // 验证

    3:  js, 用正则表达式的.exec函数用来查找匹配的选项,并把查到的值取出. // 查找

    4: 字符串应用正则

    string.match(reg), 正则查找字符串

    string.search(reg), 正则查找位置

    string.replace(reg,'newstr');正则替换

    String.split(reg); 正则拆分

     

     

     

    正则表达式3句话

    1:要找什么字符?

    2:从哪儿找?

    3:找几个?

     

     

    1.要找什么字符?

    1.1 字面值,"hi", 就是找"hi"

    1.2 字符集合来表示,[abcd], 指匹配abcd中的任意一个

    1.3 用范围来表示字符 [0-9],[a-z] [A-Z]

    1.4 字符"" (就是系统为常用的字符集合创建的一个简写)

     例: d ----> [0-9], w--->[0-9a-zA-Z_], s ------->[  vf ](空白符)

    1.5 补集的形式来表示字符集合

    :[0-9]===>[^0-9],  [abcef]===>[^abcef]

    对于字符簇,只需把字母大写,即可表示补集

    [d] ==== >[D],  [w]===>[W],[s]==>[S](非空白字符)

    1.6 " ", 代表"任意字符,不包括换行符"

     

     

     

    2:从哪儿找,找到哪儿?

    2.1 , ====>'单词边界'

    hi ===>从单词的边界开始匹配,hi

     

    2.2 B ===> 单词的非边界把单词中间的某一部分取出来

    把中间含有 hi的单词取出hi不能在两端

     

    2.3 ^ caret, "字符串的起始位置开始匹配",

    2.4 $ ,匹配到字符串的结束位置 

     

     

    3: 找多少

    * :  0--->N  ===> 等价 {0,}

    +: [1,N] ====>等价  {1,}

    ?: [0,1]  ====>等价   {0,1}

    a{n} : 字符a准确的出现n

    a{n,}: 字符a至少出现次

    a{n,m}, n-->m次 

     

     

    个数修饰符默认是贪婪模式,尽量多找

    "个数修饰符后面加?",则为非贪婪模式尽量少的找.

     


    模式:

    以匹配为例,默认情况,match找到一次就结束,

    能否 告诉匹配过程一直找,在全文范围内一直找.

    g ->全局模式 ,global  [找所有的,而不是找一次结束]

    i---> 忽略大小写 ignore 

    m->多行模式

    s-->单行模式(把整个字符串看成一行) (js不支持单行模式)

    js,不支持单行的情况下,如何换行?

    --->什么样的模式能代表"所有"字符串

    ==> [dD], [sS],[wW]

     

    预先判断是否为指定值

     

    正向预查

    C

    O

    M

    I

    N

    g

    灰色:是查找的值

     

    预先判断是否不为指定值

     

    负向预查

    C

    O

    M

    I

    N

    g

    灰色:是查找的值

     

     

     

    向前正向预查:

    U

    n

    L

    U

    C

    ky

    Js不支持向前正向预查(零宽度正回顾后发断言)


    反向引用/后向引用

     

    子表达式

    Exec为例:

    匹配到的数组0个单元代表 "整个正则表达式的匹配结果"

    1

    2

    3

    ...

    N   , 则代表第 N个子表达式的匹配结果

     

    如何引用子表达式所匹配的结果?

    :

    在表达式内部,反向引用时来匹配第N个子表达式的结果

    子表达式的当成变量传递时,$N来匹配 第N个子表达式的匹配结果

     

     

    全角空格的unicode编码   u3000

     

     

  • 相关阅读:
    基于微信红包插件的原理实现android任何APP自动发送评论(已开源)
    人家为撩妹就鼓捣个网页,我做了个约炮APP(已开源)
    android加固签名工具(源码下载)
    如何优雅的写一篇安利文-以Sugar ORM为例
    写给独立开发兄弟共勉-寂寞是19首诗和2首悲歌
    我开源了一个ios应用,你们拿去随便玩
    android用欢迎界面加载运行环境
    用c#操作Mongodb(附demo)
    sql:除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询
    怎样阻止Linux服务器执行rm -rf /*命令
  • 原文地址:https://www.cnblogs.com/suihui/p/3237802.html
Copyright © 2020-2023  润新知