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]
    

      

      

     
  • 相关阅读:
    ArrayList 和 Vector 的区别
    Redis在springboot中使用,读取字符串
    初始化Mysql
    Redis 安装
    React-脚手架
    React virtual DOM explained in simple English/简单语言解释React的虚拟DOM
    数据结构
    书单(18-19)
    算法复杂度
    otrs离线部署
  • 原文地址:https://www.cnblogs.com/xiaoheimiaoer/p/3677282.html
Copyright © 2011-2022 走看看