• javascript正则表达式学习笔记


    使用规则

    用//包裹语句
     单词边界
    * 转义
    g 全文搜索
    m换行搜索
    i 忽略大小写
    lastIndex 是当前表达式匹配内容的最后一个字符的下一个位置
    source 正则表达式的文本字符串
    字符类 泛指 [abc] 把a或b或c归为一类(匹配abc中任意一种) 取反^  [^abc]
    范围类 [a-z] 匹配从a到z的任意字符 也可以连写[a-zA-Z] 如果想匹配横线 [0-9-] 比如匹配所有数字包括横线 就可以在后面继续跟一个横线
    . [^
    
    ] 除了回车和换行之外的所有字符
    d 数字字符
    D 非数字字符
    s 空白符
    S非空白符
    w 单词字符(字母 数字下划线)
    W非单词字符
    ^开始 $ 结束 B非单词边界
    

    量词

    ?出现0次或1次(最多1次)
    + 出现1次或多次(至少1次)
    * 出现0次或多次(任意次)
    {n} 出现n次
    {n,m} 出现n到m次
    {n,} 至少出现n次
    

    非贪婪模式

    量词后面加? 意思是不用匹配最多的,匹配最少次出现的即可
    如:"12345678".replace(/d{3,6}?/,"x") 输出:xx78
    

    分组

    用()可达到分组的功能
    (book){3} book出现3次
    'a1b2c3d4'.replace(/([a-z]d){3}/g, 'x') 输出:xd4
    

    或 |

    使用| 可以达到或的效果
    'ByronsperByrCapser'.replace(/Byr(on|Ca)sper/g, 'x') 输出:xx
    

    反向引用

    '2016-11-25'.replace(/(d{4})-(d{2})-(d{2})/g, '$3/$2/$1') 输出:'25/11/2016'
    

    忽略分组

    不想捕获某些分组,不做处理,只需在分组内加上?:就可以 如(?:Byron).(ok)
    .为任意字符 Byron被忽略 只需处理ok
    

    正向前瞻

    /w(?=d)/ 匹配到单词字符(数字也是单词字符)然后向后看看是否是数字
    'a2*34v8'.replace(/w(?=d)/g, 'x') 输出:'x2*x4x8'
    

    正则方法

    text exec search
    'sas12sd21ad1sd'.search('1') 输出3
    search方法查找出返回index 找不到返回-1
    写入正则表达式会自动忽略g
    match
    split方法中也可以传入正则
    
    'a1b2c3d4e5'.replace(/(d)(w)(d)/g, (match,g1,g2,g3,index,origin)=>{
    	console.log(match);
    	return g1+g2;
    })
  • 相关阅读:
    Unity 预处理命令
    Unity 2DSprite
    Unity 生命周期
    Unity 调用android插件
    Unity 关于属性的get/set
    代码的总体控制开关
    程序员怎么问问题?
    VCGLIB 的使用
    cuda实践(1)
    python之json文件解析
  • 原文地址:https://www.cnblogs.com/lfnumber7/p/14458722.html
Copyright © 2020-2023  润新知