• 正则表达式


    正则

    var reg = /is/;
    

    表示单词边界,保证is是完整单词。

    'is,is'.replace(reg,'IS')//'IS,is'
    // String.prototype.replace(reg,'IS')用第二个参数替换符合第一个正则的字符
    

    g代表全文搜索(global)

    'is,is'.replace(/is/g,'IS')//'IS,IS'
    

    i 代表忽略大小写,默认对大小写是敏感的(ignore case)

    'is,Is'.replace(/is/gi,'has')//"has,has"
    

    m 代表多行匹配(multiline)

    []字符类

    []代表某类,只要有其中之一就可以了

    'is am are'.replace(/[abc]/g,'0')//"is 0m 0re"
    

    ^字符类取反

    'is am are'.replace(/[abc]/g,'0')//"000a00a00"
    

    范围类[a-z],[0-9],[a-zA-Z]

    预定义类

    大写代表取反,如D之类

    1. .除了回车换行以外所有字符
    2. d [0-9]
    3. s 空白符
    4. w [a-zA-Z_0-9]单词字符(数字字母下划线)

    边界

     单词边界 B非单词边界

    ^以什么开始 $以什么结束

    '1a2a3a'.replace(/d./g,'0')//'000'
    '1a2a3a'.replace(/d.$/g,'0')//"1a2a0"
    

    量词

    word times
    ? [0,1]
    + [1,+infinite)
    * [0,infinite)
    {n} n
    {n,m} [n,m]
    {n,} [n,+infinite)
    '22a333a4444a'.replace(/d{3}/g,'0')//22a0a04a"
    

    贪婪模式

    正则会尽可能多的匹配结果。

    非贪婪模式,只要最少匹配成功就可以了。

    '12345678'.replace(/d{3,6}?/g,'m')//'mm78'
    

    分组()

    'ab123aba11abab1'.replace(/(ab){2}/g,'X');//"ab123aba11X1"
    

    或|

    'appabb'.replace(/a(pp|bb)/g,'X')//"XX"
    

    分组换位

    '2017-03-14'.replace(/(d{4})-(d{2})-(d{2})/g,'$3/$2/$1')//"14/03/2017"
    

    前瞻

    js没有后顾

    'z1_3ab'.replace(/w(?=d)/g,'X')//"X1X3ab"
    

    否定前瞻

    'z1_3ab'.replace(/w(?!d)/g,'X')//"zX_XXX"
    

    RegExp

    属性

    global multiline ignore 都是只读的boolean型

    lastIndex 当前匹配结果的最后一个字符的下一个字符

    source 字面量(不包括g之类)

    方法

    RegExp.prototype.test(str)

    有匹配结果返回true,否则false,这里有个小问题

    var reg = /w/g;
    reg.test('ab');//true
    reg.test('ab');//true
    reg.test('ab');//false
    reg.test('ab');//true
    

    这是因为对正则匹配全局,每次都会改变reg的lastIndex属性每次+1,在这个例子中的3遍就无法找到了,第四次又重置回0。

    exec(str)

    非全局
    var reg = /d(w)d/;
    var str = '#2a3c4d5b';
    console.log(reg.exec(str))//Array:['2a3',a] .input='#2a3c4d5b' .index = 1;
    //index匹配结果第一个字符的位置
    
    全局
    var reg = /d(w)d|(#)/g;
    var str = '2a3c4d5b#';
    console.log(reg.exec(str))//Array:['2a3',a,undefined] .input='#2a3c4d5b' .index = 0;
    console.log(reg.exec(str))//Array:['4d5',d,undefined] .index = 4;
    console.log(reg.exec(str))//['#',undefined,'#'] .index = 8 ;
    

    字符串的方法

    返回下标

    'a1b2c3'.search('2')//3
    

    match

    'a1b2c3'.match(/d/g)//['1','2','3']
  • 相关阅读:
    吴裕雄--天生自然 PHP开发学习:数组
    吴裕雄--天生自然 JAVASCRIPT开发学习:测试 jQuery
    【t065】最敏捷的机器人
    【t079】火星上的加法运算
    【t053】整数去位
    【9604】纪念品分组
    【心情】bjdldrz
    【9601】零件分组
    【9916】编辑距离
    【38.24%】【POJ 1201】Intervals
  • 原文地址:https://www.cnblogs.com/mydia/p/6737680.html
Copyright © 2020-2023  润新知