zoukankan      html  css  js  c++  java
  • javascript之正则表达式

    先理解 转义符号     去掉符号的原来意义

    RegExp有两种创建方式
    1.直接量
    2.new RegExp

    表达式

    //表达式
    i 忽视大小写  g 全局匹配  m  执行多行匹配       /abc/igm
    test 返回是否匹配 布尔值
    match 返回匹配的值 数组
    /[]/    []是范围  /[0-9A-Za-z]/  /[0-9A-z]/   /[^a]/ 非a
    /(abc|bcd)/  匹配abc或bcd

    元字符

    //元字符
    w === [0-9A-z_]   W === [^w]  非w
    d === [0-9]   D === [^d]
    s === 空白字符(
     f 
     	 v 空格)   S === [^s]
     === 单词边界  B === 非单词边界   str = 'abc cde def'   str.match(/cde/) -> cde
    	 匹配 /	d/ => 能够匹配 'abc	def'     不能匹配 'abc    def' 
    . === [^
    ]

    量词

    //量词
    n+ === 至少出现1次 {1, }   /w+/  [0-9A-z_]至少出现1次
    n* === {0, }
    n? === {0, 1}
    n{x} === {3}
    n{x, y} === {x, y}
    n{x, } === {x, }
    n$ === n为结尾   
    ^n === n为首位   /^abc$/ 以abc开头且以abc结尾
    例子:检验首尾是否含有数字  ->   /^d|d$/
        检验首尾都含有数字    ->   /^d[sS]*d$/
    正向预查(正向断言)
    ?=n  匹配任何后面紧接指定字符串n的字符串
    ?!n  匹配任何后面没有紧接指定字符串的字符串   str = 'abaaa'   reg = /a(?=b)/g ->  a后面跟b         
                                      reg
    = /a(?!b)/g -> a后面不跟b 默认贪婪匹配(能多则多) 非贪婪匹配(能少则少) 量词? 比如 n+? 能取一次就一次

    RegExp对象方法

    //RegExp对象方法
    test -> reg.text(str)  检索字符串中指定的值返回true或false
    exec -> reg.exec(str)  检索字符串中指定的值返回找到的值,并确定其位置
      /ab/g.exec('ababab') -> ['ab', index: 0, input: 'ababab']  (index就是reg.lastIndex (检索游标))
    /(a)1/g -> 1表示引用第一个子表达式(括号里面匹配的结果) 2引用第二个子表达 以此类推
      比如匹配 aabb格式  ->  /(w)1(w)2/


    String上的RegExp方法

    search -> str.search(reg)  检索与正则表达式相匹配的值
    match -> str.match(reg)  检索一个或多个正则表达式的匹配
    replace -> str.replace(reg, '')  替换正则表达式匹配到的值
      'aabb' -> 'bbaa'  str.replace('/(w)1(w)2/', '$2$2$1$1')  $1指第一个字表子表达式,$2指第二个子表达式
                 str.replace('/(w)1(w)2/', function($, $1, $2) {    如果 要使$无意义 $$
                             return $2 + $2 + $1 + $1
                         })
    splite -> str.splite(reg)  字符串匹配到的值分割成数组

    看下面例子

    var str = 'aaaaaabbbbbcccccccccc'  //去重 变成abc
    var reg = /(w)1*/g
    console.log(str.replace(reg, '$1'))
    
    
    var str = '1000000000000'  //变规范 变成 100,000,000,000,000
    var reg = /(?=(B)(d{3})+$)/g
    console.log(str.replace(reg, ','))

    end !!!

  • 相关阅读:
    杀死初创科技公司的四大工程陷阱
    杀死初创科技公司的四大工程陷阱
    Linux中su和sudo的用法整理
    Linux中su和sudo的用法整理
    Docket 使用命令
    Docker 部署 portainer
    Linux 双网卡绑定
    docker安装部署,阿里源加速
    nmcli详解
    搭建LAMP环境示例
  • 原文地址:https://www.cnblogs.com/lyjfight/p/13831772.html
Copyright © 2011-2022 走看看