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 !!!

  • 相关阅读:
    WampServer Mysql配置
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 前10名
  • 原文地址:https://www.cnblogs.com/lyjfight/p/13831772.html
Copyright © 2011-2022 走看看