美文网首页
【标准库】RegExp

【标准库】RegExp

作者: 南方帅 | 来源:发表于2019-03-04 10:53 被阅读0次

    申明方式, 第二种可以使用变量

    var regex = /xyz/;
    var regex = new RegExp('xyz', i);
    
    var reg = 'xyz';
    var regex = new RegExp(reg);
    
    • 在匹配的时候 会记住上次的lastIndex所以匹配的时候不应该更改所要匹配的字符串
    var r = /bb/g;
    r.test('bb') // true
    r.test('-bb-') // false
    
    new RegExp('').test('abc')
    
    • exec() 用来返回匹配结果,匹配成功,返回一个数组,失败返回null
    var s = '_x_x';
    var r1 = /x/;
    var r2 = /y/;
    
    r1.exec(s) // ["x"]
    r2.exec(s) // null
    
    • String.prototype.match() lastIndex 属性无效
    • String.prototype.search() 返回第一个满足的位置,没有返回-1
    • String.prototype.replace()
    替换字符
    $&  指代匹配的字符串
    $`   匹配结果之前all
    $'   匹配结果之后all
    'hello world'.replace(/(\w+)\s(\w+)/, '$2 $1')
    // "world hello"
    
    'abc'.replace('b', '[$`-$&-$\']')
    // "a[a-b-c]c"
    

    第二个参数是 函数

    var a = 'The quick brown fox jumped over the lazy dog.';
    var pattern = /quick|brown|lazy/ig;
    
    a.replace(pattern, function replacer(match) {
      return match.toUpperCase();
    });
    

    捕捉模式 替换模板

    var prices = {
      'p1': '$1.99',
      'p2': '$9.99',
      'p3': '$5.00'
    };
    
    var template = '<span id="p1"></span>'
      + '<span id="p2"></span>'
      + '<span id="p3"></span>';
    
    template.replace(
      /(<span id=")(.*?)(">)(<\/span>)/g,
      function(match, $1, $2, $3, $4){
        return $1 + $2 + $3 + prices[$2] + $4;
      }
    );
    // "<span id="p1">$1.99</span><span id="p2">$9.99</span><span id="p3">$5.00</span>"
    

    字面量字符和元字符

    • 点字符(.)
      点字符(.)匹配除回车(\r)、换行(\n) 、行分隔符(\u2028)和段分隔符(\u2029)以外的所有字符
    • 位置符
      ^ $ 开始 结束
    • 选择符|
    /11|22/.test('911') // true
    
    • [] && [^]
      如果方括号里面没有其他字符,只有[^] 就表示匹配一起字符,而点号(.)不包括换行回车这些
    /[abc]/.test('hello world') // false
    /[abc]/.test('apple') // true
    /[^abc]/.test('bbc') // false
    
    var s = 'Please yes\nmake my day!';
    
    s.match(/yes.*day/) // null
    s.match(/yes[^]*day/) // [ 'yes\nmake my day']
    
    • [-] 可选连字符
    • 预定义模式
    \d 匹配0-9之间的任一数字,相当于[0-9]。
    \D 匹配所有0-9以外的字符,相当于[^0-9]。
    \w 匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]。
    \W 除所有字母、数字和下划线以外的字符,相当于[^A-Za-z0-9_]。
    \s 匹配空格(包括换行符、制表符、空格符等),相等于[ \t\r\n\v\f]。
    \S 匹配非空格的字符,相当于[^ \t\r\n\v\f]。
    \b 匹配词的边界。
    \B 匹配非词边界,即在词的内部。
    
    • {n,m} 表示匹配次数,n到m次,{n,m}表示重复不少于n次,不多于m次。
    ? 表示出现0 到1次 等同`{0,1}`
    * 表示0到多次,等同于{0,}
    + 表示1到多次,等同于{1,}
    
    • 贪婪模式 +? *? ??

    相关文章

      网友评论

          本文标题:【标准库】RegExp

          本文链接:https://www.haomeiwen.com/subject/zmjduqtx.html