• 正则表达式学习


     
    测试正则的网站:https://regexper.com/
     
     
    修饰符:
    1. g:global全文搜索,不添加,搜索到第一个匹配停止。
    2. i:ignore case 忽略大小写,默认大小写敏感。
    3. m:multiple lines 多行搜索。
    4. lastIndex:当前表达式匹配内容的最后一个字符的下一个位置
    5. source:正则表达式的文本字符串
     
    正则表达式有2种基本字符类型组成:
    1. 原义文本字符(比如:abc)
    2. 元字符(比如:)。元字符是正则表达式中有特殊含义的非字母字符 (.*+?^.|(){}[])
     
    元字符:
    1. :水平制表符
    2. v:垂直制表符
    3. :换行符
    4. :回车符
    5. :空字符
    6. f:换页符
     
    字符类:
    1. [abc]:构建一个简单的类(比如:'a1b2c3d4'.replace(/[abc]/g,'X') =》X1X2X3d4)
    2. [^abc]:取反
     
    范围类:
    1. [a-z]:从a到z的任意字符,包含a和z。(比如:'a1b2c3d4aa'.replace(/[a-z]/g,'X') =》X1X2X3X4XX)
    2. [a-zA-Z]:在[]组成的类内部可以连写的。
    3. [a,z]:分割('12345678'.replace(/[1,3]/g,'A') =》A2A45678)
     
    预定义类:
    1. .:除了回车符和换行符之外的所有字符([^ ])
    2. d:数字字符([0-9])
    3. D:非数字字符([^0-9])
    4. s:空白符([ x0Bf ])
    5. S:非空白符([^ x0Bf ] )
    6. w:单词字符,包含字符、数字、下划线([a-zA-Z_0-9])
    7. W:非单词字符([^a-zA-Z_0-9 ])
     
    边界匹配字符:
    1. ^:以xxx开始('@123@abc@a'.replace(/^@./g,'X') =》X23@abc@a)
    2. $:以xxx结束('@123@abc@a'.replace(/@.$/g,'X') =》@123@abcX)
    3. :单词边界
    4. B:非单词边界
     
    量词:
    1. ?:出现0次或1次
    2. +:出现1次或多次
    3. *:出现0次或多次
    4. {n}:出现n次
    5. {n,m}:出现n到m次
    6. {n,}:至少出现n次
     
    贪婪模式:正则表达式会尽可能多的匹配,直到匹配失败。('12345678'.replace(/d{3,6}/g,'A') =》A78)
    非贪婪模式:尽可能少的匹配。在量词后面加上?即可。('12345678'.replace(/d{3,6}?/g,'A') =》AA78)
     
    分组:
    1. 使用()可以达到分组的功能,使量词作用于分组('a1b2c3d4'.replace(/(wd){3}/g,'X') =》Xd4)
    2. 或|('a1b2c3d4'.replace(/(a1|b2)/g,'X') =》XXc3d4)
     
    反向引用('2017-05-06'.replace(/(d{4})-(d{2})-(d{2})/g,'$2/$3/$1') =》05/06/2017)
     
    忽略分组:不希望捕获某些分组,只需要在分组内加上?:就可以
     
    前瞻:在正则表达式匹配到规则的时候,向前检查是否符合断言,后顾方向相反,JS不支持后顾。
    1. 正向前瞻:exp(?=assert)('a2*3'.replace(/w(?=d)/g,'X') =》X2*3)
    2.  负向前瞻:exp(?!assert)
    3. 正向后顾:exp(?<=assert),JS不支持。
    4. 负向后顾:erp((?<!assert),JS不支持。
     
    test(str):用于测试字符串参数中,是否存在匹配正则表达式模式的字符串。(var reg1 = /w/; reg1.test('a');//true)
    exec(str):使用正则表达式模式对字符串执行搜索,并将更新全局RegExp对象的属性以反映匹配结果。
    如果没有匹配的文本则返回null,否则返回一个结果数组:index 声明匹配文本的第一个字符的位置,input 存放呗检索的字符串string
  • 相关阅读:
    解决docx4j 变量替换 由于变量存在样式式或空白字符 导致替换失败问题
    redis批量删除key 远程批量删除key
    idea 集成sonarLint检查代码bugs
    mac jmeter 的使用
    tomcat配置管理员-走后门
    终端mysql Operation not permitted错误解决方案
    update使用inner join
    hibernate 三种状态的转换
    数据库中间表插入乱序
    解决https证书验证不通过的问题
  • 原文地址:https://www.cnblogs.com/amusement1992/p/7159942.html
Copyright © 2020-2023  润新知