zoukankan      html  css  js  c++  java
  • 初探JS正则表达式

    1.概述
        正则表达式是一个描述字符模式的对象。Javascript的正则表达式语法的是Perl5的正则表达式的子集。JS正则表达式有两种使用方式,文本模式和RegExp对象模式,实例如下:
        
    var patern = /java/ig;    //文本模式
    var patern = new RegExp(/java/, 'ig');    //对象模式
    

      注:ES3中RegExp共用一个对象,ES5每次调用产生一个新对象

    2.正则表达式使用的主要字符和元字符
        2.1直接量字符
    字符
    匹配
    字母和数字
    自身
    o
    NUL字符(u0000)
    制表符(u0009)
    换行符(u000A)
    v
    垂直制表符(u000B)
    f
    换页符(u000C)
    回车符(u000D)
    xnn
    十六进制数,nn指拉丁字符
    uxxxxx
    十六进制数,xxxx指unicode字符
    cX
    控制字符^X

        2.2字符类

    字符
    匹配
    [...]
    方括号内的任意字符
    [^...]
    除方括号外的任意字符
    .
    除换行符和其他unicode行终止符外的任意字符
    w
    任何ASCII字符组成的单词,等价于[a-zA-Z0-9]
    W
    非ASCII字符组成的单词,等价于[^a-zA-Z0-9]
    s
    任何unicode空白符
    S
    任何非unicode空白符
    d
    任何ASCII数字,等价于[0-9]
    D
    非ASCII数字,等价于[^0-9]
    []
    退格直接量
        2.3重复
    字符
    含义
    {n,m}
    匹配前一项,至少n次,不超过m次,[n,m)
    {n,}
    匹配前一项,至少n次或者更多次,[n,无穷)
    {n}
    匹配前一项n次,==n
    ?
    匹配前一项,0到1次,0||1
    +
    匹配前一项,1到多次,[1,无穷)
    *
    匹配前一项,0次到多次,[0,无穷)
    备注:非贪婪的重复,只需要在重复后面加一个?即可,目标是尽可能少的匹配。
        2.4选择、分组和引用字符
    字符
    含义
    |
    选择,匹配左边或者右边的表达式
    (...)
    分组,可使用重复符进行修饰(记忆)
    (?:...)
    只组合,不记忆
    和第n组,第一次匹配的字符相匹配
    2.5指定匹配位置,即锚字符
    字符 含义
    ^
    匹配字符串的开头
    $
    匹配字符串的结尾
    
    匹配单词的边界符
    B
    匹配单词非边界符
    (?=p)
    正向先行断言,都与p匹配但不包含
    (?!p)
    负向先行断言,都与p不匹配
    2.6修饰符
    字符
    含义
    i
    不区分大小写
    m
    多行匹配模式
    g
    全局匹配
    3.用于模式匹配的方法,包含String和RegExp对象
        3.1String提供了四种支持正则表达式的方法
    方法名称
    使用说明
    String.search(patern)
    返回第一个与之匹配的子串起始位置,如果找不到就返回-1
    String.replace(patern, newStr)
    将匹配的字符串替换成newStr,newStr也可以是动态替换字符串的函数
    String.match(patern)
    返回一个有匹配结果组成的数组,如果非全局匹配,第一个是匹配的字符串,后面为分组值
    String.split(partern)
    根据规则分割成数组
        3.2RegExp提供两个方法
    方法名称
    使用说明
    RegExp.exec(string)
    和String的match方法返回值相同,RegExp.lastIndex是全局匹配的下一个匹配项的起始位置
    RegExp.test(string)
    当exec不为null时,返回true
    4.正则表达式简单使用实例
    匹配中文字符: [u4e00-u9fa5]
    匹配首尾空格:(^s*)|(s*$)
    //获取URL参数
    var url = "http://www.cnblogs.com?func=window.getUserName&errno=0";
    var splitUrlReg = /?(w+)=([^&=]*)(?:&(w+)=([^&=]*))+/;;
    var paramArr = url.match(splitUrlReg);
    console.log(paramArr);
    //["?func=window.getUserName&errno=0", "func", "window.getUserName", "errno", "0", index: 22, input: "http://www.cnblogs.com?func=window.getUserName&errno=0", clone: function]
    

      

      

     
  • 相关阅读:
    Atitit sql计划任务与查询优化器统计信息模块
    Atitit  数据库的事件机制触发器与定时任务attilax总结
    Atitit 图像处理知识点体系知识图谱 路线图attilax总结 v4 qcb.xlsx
    Atitit 图像处理 深刻理解梯度原理计算.v1 qc8
    Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx
    Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析
    Atitit View事件分发机制
    Atitit 基于sql编程语言的oo面向对象大规模应用解决方案attilax总结
    Atitti 存储引擎支持的国内点与特性attilax总结
    Atitit 深入理解软件的本质 attilax总结 软件三原则"三次原则"是DRY原则和YAGNI原则的折
  • 原文地址:https://www.cnblogs.com/xiaoheimiaoer/p/3677282.html
Copyright © 2011-2022 走看看