Lyrics


< More and better />


js正则

字面量
  1. 匹配其中一个is

var reg = /\bis\b/g; //\b表示单词边界

  1. 替换下列字符串中的is 为IS

var str = ‘hi is a boy ,this is a dog’

var str.replace(reg,’IS’);//注意如果reg 后面不是/g,不是全局匹配的话,只会替换第一个is

构造函数
  1. var reg = new RegExp (‘\bis\b\,g);

注意 在js 中\ 是需要转义的

修饰符

g: global 全文匹配,不添加g,则找到第一个满足条件的停止

i:ignore case 忽略大小写

m 多行搜索

元字符
  1. 愿义文本字符 : a,b,c…

  2. 元字符:非字母字符;
    [abc] :表示有a或者b或者c都可以,就是a或者b或者c

  3. 字符取反

    [^abc] :!a | !b|!c

  4. 范围类

    1) [a-zA-Z] a到z,A-Z的任意字符
    2) [0-9] 表示0-9

  5. 预定义类
    1) . 除了回车和换行所有的字符
    2) [\d] 数字5) \w 数字,字母,下划线
  6. 边界字符
    3) [\D] 非数字字符
    4) \s 空白符

    1) \b 单词边界
    2) ^ 开始
    3) $ 结束
    4) \B 非单词边界

  7. 量词

    ? 出现一次或者0次

    • 一次或多次
    • 任意次
      ; { n} n次
      {n,m} n-m次
      {n,} 至少n次
贪婪模式(默认)
  1. 尽可能多的匹配
    例子: ‘123456789’.replace(/\d{3,6}/g,’X’)
    X789 尽可能多的匹配多的 为 6
    
非贪婪模式 (在量词后面加上? 号}
例子: '123456789'.replace(/\d{3,6}?/g,'X')
     XX789 尽可能多的匹配多的 为 3
分组
  1. boy 这个单词重负3次 ,使用() // (boy){3}

  2. 或 | ; ab(c|d)ef //abced | abdef

  3. 反向引用: 例子: 2015-12-25 变成 12/25/2015

‘2015-12-25’.replace(/(\d{4})-(\d{2})-(\d{2})/g,’$2/$3/$1’)

忽略分组 (在分组中加 ?: )
前瞻
  1. 正向前瞻 exp(?=assert) 满足exp 正则同时,还要看后面满足assert
  2. 负向前瞻 exp(?!assert) 满足exp ,看前面不满足assert 才可