美文网首页
正则表达式(语法)

正则表达式(语法)

作者: 撕心裂肺1232 | 来源:发表于2018-06-13 17:50 被阅读0次

    一、js正则表达式——REGEXP对象

    (一)实例化
    1.字面量法

    var reg = /\dis\d/g;

    2.构造函数法

    var reg = new RegExp('\dis\d','g');

    (二)修饰符

    -g: global 全文搜索,不添加,搜索到第一个匹配停止
    -i: ignore case 忽略大小写
    -m: multiple lines 多行搜索

    (三)元字符

    . * + ? $ ^ / \ () {} []

    1.字符类
    用[]来构建一个简单的类,泛指。
    

    如:[abc] 将a或b或c的内容,即指含有a或b或c的一类字符串

    2.字符类取反
    • 用元字符^创建,反向类/负向类
    • 反向类指不属于某类的内容
    • 表达式[^abc]指不是字符a或b或c的内容(除去a、b、c)
    3.范围类
    类似于[a-z],用-来连接两个字符,[]来指定类
    
    • [a-z] 表示从a都z得任意一个字符
    • [a-z]是个闭区间,包含a和z本身
    • 在[]组成的类内部是可以连着写的,如[a-zA-Z](小写字符或者大写字符) 、[0-9-](数字或者-)

    '2018-06-13'.replace(/[0-9-]/g,'X');
    'XXXXXXXXXX'

    4.预定义类
    • ‘.’ 等价于 [^\r\n],指 除了回车和换行符之外的所有字符
    • '\d' 等价于[0-9],指 数字字符
    • ‘\D’ 等价于[^0-9],指 非数字字符
    • ‘\s’ 等价于[\t\n\xOB\f\r],指 空白字符
    • ‘\S’ 等价于[^\t\n\xOB\f\r],指 非空白字符
    • ‘\w’ 等价于[a-zA-Z_0-9],指 单词字符(字母或数字或下划线)
    • ‘\W’ 等价于[^a-zA-Z_0-9],指 非单词字符
    5.边界字符
    • ‘^’ 含义:以XXX开头
    • ‘&’ 含义:以XXX结束
    • ‘\b’ 含义:单词边界
    • ‘\B’ 含义:非单词边界
    6.量词
    量词作用于其前面的单词或分组
    
    • ‘?’ 含义:出现0次或1次(最多出现1次)
    • ‘+’ 含义:出现1次或多次(至少出现1次)
    • ‘*’ 含义:出现0次或多次(任意次)
    • ‘{n}’ 含义:出现n次
    • ‘{n,m}’ 含义:出现n到m次
    • ‘{n,}’ 含义:至少出现n次
    • ‘{0,n}’ 含义:出现0到n次(最多n次)
    7.贪婪模式(默认)
    如:\d{3,6}   含义: 匹配3-6个数字,贪婪模式下会尽可能多滴匹配6次
    

    '12345678'.replace(/\d{3,6}/g,'X');
    'X78'

    8.非贪婪模式
    • 让正则表达式尽可能少的匹配,即一旦成功匹配不再继续尝试
    • 只需在量词后面加上?即可

    '12345678'.match(/\d{3,6}/g);
    ['123','456']

    '123456789'.match(/\d{3,6}/g);
    ['123','456','789']

    9.分组
    使用()来分组,使用量词作用于分组
    

    /zhang{3}/ 指:"zhan"+3个“n”

    /(zhang){3}/ 指:3个"zhang"

    "a1b2c3d4".replace(/([a-z]\d){3}/g,"X");
    "Xd4"

    10.或
    使用|来达到或的效果
    

    "zhangasdf".replace(/zhang|asdf/g,"X");
    "XX"

    "zhangsdfzhanasdf".replace(/zhan(g|a)sdf/g,"X");
    "XX"

    11.反向引用

    如:将2018-06-13转换成6/13/2018

    "2018-06-13".replace(/(\d{4})-(\d{2})-(\d{2})/g,"231")2指捕获分组2,3指捕获分组3,1指捕获分组1

    12.忽略分组
    不希望捕获分组,只需在分组内加上?:即可
    

    "/(?:zhang).(ok)/"

    13.前瞻
    • 正则表达式从文本头部向尾部开始解析,文本尾部方向,为“前”
    • 前瞻指正则表达式匹配到规则时,向前(继续往文本尾部)检查是否符合断言,后顾/后瞻方向相反
    • JavaScript没有后瞻
    • 符合:“肯定/正向”匹配;不符合:“否定/负向”匹配

    \w(?:\d)匹配一个单词其后面跟着数字
    "a23".replace(/\w(?:\d)/g,"X")
    "X2
    3"

    "a2345v8".replace(/\w(?:\d)/g,"X")
    "X2
    XX5X8"

    "a2*345v8".replace(/\w(?!\d)/g,"X")
    "aX34Xv8"

    14. 对象属性
    • global:全文搜索,默认false
    • ignore case:忽略大小写,默认false
    • multiple: 多行搜索,默认false
      -lastIndex:指当前表达式匹配内容的最后一个字符的下一个位置
    • source: 正则表达式的文本字符串
    14. 对象的方法
    test()  exec()  search()  match()  split()  replace()

    相关文章

      网友评论

          本文标题:正则表达式(语法)

          本文链接:https://www.haomeiwen.com/subject/zrnjeftx.html