正则的一些查遗补漏

  • \b 表示单词边界,比如我想在一段话中精确找到单词im,或我想找eng结尾的所有单词,这时候就可以通过单词边界进行匹配。/\bim\b/ /\w+eng\b/g
  • 构造函数中new RegExp()中一定要记得对反斜线\进行转义,在javascript中反斜线本身就是特殊字符,使用需要转义

    var reg = new RegExp('\\w+eng\\b','g') //undefined
    // reg = /\w+eng\b/g
    "asd abc leng kkeng alkegl lkjengll".match(reg)
    // ["leng","kkeng"]
  • \t 水平制表符,其实就是tab键占的空格!

  • [abc] 创建abc字符类,[^abc] 创建反向字符类,就是差集的意思,除了abc其他的都匹配
  • \w 的等价类就是[a-zA-Z_0-9]\s[\t\n\x0B\f\r] 空白符
  • 正则默认是贪婪模式,即最大程度地匹配,非贪婪模式则是说尽可能少地匹配,也就是说一旦成功不再继续尝试就是非贪婪模式。

    // 贪婪模式
    "123456789".match(/\d{3,6}/) //123456 而不是123
    // 非贪婪模式,只要在量词后面加上?就可以了,比如\w+?
    "123456789".match(/\d{3,6}?/g) // ["123","456","789"]
  • 连续匹配python单词3次,可以通过分组功能实现(python){3},量词可以作用于组别上,

  • | 如下所示

    "ByronCapser".replace(/Byron|Casper/g,"X") // XX
    "ByronsperByrCapser".replace(/Byr(on|Ca)sper/g,"X") // XX
  • 反向引用,比如想把2015-12-25 变成 12/25/2015 如何实现

    "2015-12-25".replace(/(\d{4})-(\d{2})-(\d{2})/g,"$2/$3/$1") // "12/25/2015"
    // $1,$2,$3可以捕获分组匹配的内容
    // 如果不想捕获某个分组,只需要在分组内加上 ?: 就可以了
    "2015-12-25".replace(/(\d{4})-(?:\d{2})-(\d{2})/g,"$2/$1") // "25/2015"
  • split也可以用正则,比如如下的例子

    "asd@lll.box*tem".split(/[@\.\*]/) //["asd","lll","box","tem"]
0%