正则表达式的学习要点

特性:

  1 在执行匹配时, 会按照匹配规则从前至后逐一匹配当前符串, 直到匹配成功或者到当前字符串的结尾。除非使用了^和$来限定字符串的开始和结尾 

  2 

知识点:

1. 字符类

   定义: 将任何单个字符直接量放进方括号内就组成了字符类

   特性:1 一个字符类可以匹配方括号内的任意字符  //  /[abc]/可以匹配任何包含abc的字符串

              2 字符类只匹配一次, 匹配到了就继续后继的匹配 

    3 特殊符号: ^非方括号内的字符,  -字符表示字符范围 // /[^abc]/ /[0-9]/

 2. 重复

  定义: 使用花括号{}和特殊符号? + *来表示正则表达式中某个元素的重复次数

  用法: {n, m} 包含n次不包含m次, 左闭右开的区间

      {n} 匹配n次

      {n,} 匹配n到多次

       ? 0或1次

       + 1或多次

       * 1或多次

 3,  选择: 

  定义: 使用竖线符 | 来表示可供选择的字符,例如:/ab|cd|ef/可以匹配ab或cd或ef,不需要使用圆括号包裹匹配单元ab,因为他把ab当成独立单元,不会单独匹配a或b,而是会匹配ab。如果想加括号,可以加载足以外层,如:(/ab|cd|ef/) 

4. 分组和引用

  定义: 1 分组: 使用圆括号()来把单项或多项元素组合成子表达式, 以便可以像操作单个单元那样处理它‘

      2引用: 使用圆括号来定义子模式,’见javascript权威指南P258页详解

5. 指定位置

  定义: 正则表达式的锚点,表示匹配发生的合法位置

  特性: 1 ^ 匹配字符串的开头

      2. $ 匹配字符串的结尾

         3. \b 匹配单词的边界

       4. (?=p)要求接下来的字符必须要和p匹配, 但匹配的内容不包含匹配p的那些字符

       5. (?!p)要求接下来的字符必须不和p匹配

 

6. 修饰符

    特性: i 执行不区分大小写的匹配

           g 全局匹配

        m 多行匹配

 

7 例子

  1 匹配所有的正实数  var exp = /[1-9]+[\.][0-9]+/;

  2. 匹配url参数

var s = 'locahost:8080//users?name=tome&age=20&grade=3';

var p = /\??(\w+)=(\w+)\&?/g;

var r = s.replace(p, function(item, p1, p2) {

    console.log(item);

});

 2. 匹配年月日获取年月日

var p2 = /((\d{2})-(\d{2})-(\d{2})) (\S+) (\+(\S+))/;
var a = ' 04-06-18 14:13:45 +08:00';

var time = a.replace(p2, function(datestr, year, month, date, timestr, hour, minute, second) {

console.log(datestr);
console.log(year);
console.log(month);
console.log(date);
console.log(timestr);
console.log(hour);
console.log(minute);
console.log(second);

});

 

posted @ 2018-05-30 12:23  果感  阅读(222)  评论(0编辑  收藏  举报