js笔记13-正则表达式

正则表达式 RegExp

补充:

  • 转义字符 “/”
  • 多行字符串 var test = "\
    \ \ "
  • 字符串换行符 \n
  • 正则表达式的作用:
    匹配特殊字符或有特殊搭配原则的字符的最佳选择。

两种创建方式:

  1. 直接量
    var reg = /规则/;
    var str = '...';
    reg.test(str); //查看str中是否含有reg
  1. new RegExp();
    var reg = new RegExp("规则","属性");

属性:i 、 g、 m

    var reg = /ab/i; //  ignoreCase,忽视大小写
    var reg1 = /ab/g; //  global 全局匹配
    var reg2 = /ab/m; //   执行多行匹配
    var str = 'abababab';
    str.match(reg); // return ['ab']
    str.match(reg1); //return ['ab','ab','ab','ab']

    var reg3 = /^a/g; // a是开头   ^开头   $结尾
    var reg4 = /^a/gm;
    var str1 ='abbabab\nab';
    str1.match(reg3); //return ['a']
    str1.match(reg4); //return ['a','a']

区别

    var reg = /abdc/;
    var reg1 = new RegExp(reg); //reg 和 reg1 值相同,但不是同一个
    var reg2 = RegExp(reg); // reg 和 reg2 是同一个

表达式 (贪婪匹配原则)

[] 方括号内表示这一位的范围
(red|green|blue) 或

    var reg = /[1234567890][1234567890][1234567890]/g;
    var str = '258445sefs24e36gs54445e';
    str.match(reg); //return ['258','445','544']

[0-9]、[a-z]、 [A-Z]、[A-z]
[^] ^放在表达式([])中,表示非

元字符 (和表达式是一个东西)

  • \w (word ) \w === [0-9A-z_]

  • \W \W === [^\w]

  • \d === [0-9]

  • \D === [^\d]

  • \s === [\n\t\v\f\r ] (换行符,制表符,垂直制表符,换页符,回车符,空格)

  • \S === [^\s]

  • \b 单词边界

  • \B 非单词边界

  • . === [^\r\n]

量词

n+ //匹配1~无穷个 {1, }
n* //匹配0~无穷个 {0, }
n? //匹配0个或一个 {0,1}
n{X} //匹配X个 {X}
n{x,y} // {x,y}
n{x,} //{x, }

    var reg = /\w+/g;
    var str = 'ackls';
    str.match(reg); // "[ackls]"
    var reg = /\w*/g; 
    str.match(reg); // "[ackls,""]"
    var reg = /^\d | \d$/;
    var str = "44sefsg";
    reg.test(str);

属性

  • ignoreCase
  • global

方法

表达式的方法

  • test
  • exec !!
    var reg = /ab/g;
    var str  = 'abababab';
    console.log(reg.lastIndex);  //0           
    console.log(reg.exec(str));  // ["ab",index: 0, input: "abababab", groups: undefined]
    console.log(reg.lastIndex);  //2           
    console.log(reg.exec(str));  // ["ab",index: 2, input: "abababab", groups: undefined]
    console.log(reg.lastIndex);  //4           
    console.log(reg.exec(str));  // ["ab",index: 4, input: "abababab", groups: undefined]
    reg.lastIndex = 0;
    console.log(reg.lastIndex);  //0           
    console.log(reg.exec(str));  // ["ab",index: 0, input: "abababab", groups: undefined]
    console.log(reg.lastIndex);  //2          
  • 子表达式
    var reg = /(\w)\1(\w)\2/g;
    var str = 'aabbddee';  //匹配aabb式

    var reg1 = /(/w)\1\1\1/g;
    var str1 = 'aaaabbbb';  //匹配aaaa式

字符串的方法

  • match
  • serch //返回第一个匹配到的索引位,没有则返回-1
  • split
  • replace !!
    var str = 'aa';
    console.log(str.replace('a','b')); // 'ba'
    var reg = /a/;
    console.log(str.replace(reg,'b')); // 'ba'
    var reg1 = /a/g;
    console.log(str.replace(reg1,'b')); // 'bb'
    var reg = /(\w)\1(\w)\2/g;
    var str = 'aabb';
    console.log(str.replace(reg, "$2$2$1$1"));
    // 或者
    console.log(str.replace(reg, function($, $1, $2){
        return $2 + $2 + $1 + $1;
    }))
  • toUpperCase 变大写
  • toLowCase 变小写
    var reg = /-(\w)/g;
    var str = 'the-first-name';
    console.log(str.replace(reg,function($, $1){
        return $1.toUpperCase();
    }));
  • 正向预查/断言
    var str = 'abaaaa';
// 要求找到后面是b的a
    var reg = /a(?=b)/g;

// 要求找到后面不是b的a
    var reg = /a(!=b)/g;

    var str = '10000000000';
    var reg = /(?=(\B)(\d{3})+$)/g;
    console.log(str.replace(reg,'.'));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值