注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

梦幻雪冰

技在手,能在身,思在脑,从容过生活——陈能堡

 
 
 

日志

 
 

JavaScript 正则表达式  

2014-10-12 17:08:33|  分类: JavaScript |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

JavaScript 正则表达式

欢迎学习交流----梦幻雪冰
【1】正则表达式是什么?
         正则表达式,又称正规表示法、常规表示法(Regular Expression,在代码中常简写为reg、regexp或RE)。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

【2】正则表达式的使用范围与应用
        范围:所有的字符串或者数组的处理,都可以使用正则进行简化处理
应用一:密码强度验证
JavaScript 正则表达式 - 梦幻雪冰 - 梦幻雪冰
应用二:表单验证
JavaScript 正则表达式 - 梦幻雪冰 - 梦幻雪冰

【3】正则表达式的书写方式
         JavaScript风格:
         var reg = new RegExp("a", "ig"); 
         var str = "aadfdfdAA"; 
      console.log(str.replace(reg, "梦幻雪冰"));

         perl风格:/ 正则表达式/  纯文本不需要引号直接写在/ /之间

【4】'.'表示匹配任意字符
        var reg = /./;
        var str1 = 'hello';
        var str2 = str1.replace(reg, '-');
        console.log(str2);
       【结果】:-ello ;    replace()替换一个与正则表达式匹配的字符串

5转义字符 \. ,对于特殊含义的字符,一律使用转义字符处理
        var reg = /\.jpg/;
        var str1 = 'ibokan.jpg';
        var str2 = str1.replace(reg, '');
        console.log(str2);
       【结果】ibokan   注意区别 . 与 \.的区别,那么\.jpg匹配.jpg

【6】replace()只能替换第一个匹配字符串,如何解决?
        g代表的是全局,返回一个包含了所有匹配结果的【数组】,在不加g的时候寻找返回第一个匹配结果
        var reg = /g/g;
        var str1 = 'menghuanxuebin';
        var str2 = str1.replace(reg, 'G');
        console.log(str2);
      【结果】menGhuanxuebin 

【7】要把 'menGjiang'中的g/G都替换为空
        i表示不区分大小写
        var reg = /g/gi;
        var str1 = 'menGhuanxuebin';
        var str2 = str1.replace(reg, ' ');
        console.log(str2);
       【结果】men huanxuebin 

【8】要把a~g的都替换为空
        [ ]中括号表示区间
        var reg = /[ag]/gi;
        var str1 = 'menghuanxuebin';
        var str2 = str1.replace(reg, ' ');
        console.log(str2);
      【结果】men hu nxuebin 

       [a-g]表示a~g之间
       var reg = /[a-g]/gi;
       var str1 = 'menghuanxuebin';
       var str2 = str1.replace(reg, ' ');
       console.log(str2);
     【结果】m n hu nxu  in 

      如果写成[g-a],结果为SyntaxError: Invalid regular expression: /[g-a]/: Range out of order in character class

       匹配字母和数字
      var reg = /[a-zA-Z0-9]/g; 
      var str1 = '11meng**huanxuebin22';
      var str2 = str1.replace(reg, ' '); 
console.log(str2);
【结果】  **
       欢迎学习交流----梦幻雪冰
【9】现在只需要匹配除了数字之外的字符
        ^表示除某某某之外,但是注意这个^必须在[]之内
        var reg = /[^1-9]/g;
        var str1 = '11meng**huanxuebin22';
        var str2 = str1.replace(reg, ' ');
        console.log(str2);
      【结果】11                22 

【10】常用转义字符:
 \d代表[0-9]   \D表示[^0-9]
 \w代表[0-9a-zA-Z]   \W [^0-9a-zA-Z]
 \s表示空白字符(包括空格、制表符、换页符等等。等价于[  \f\n\r\t\v])  \S非空白字符
 \n 换行
 \r 回车
 \t Tab键(制表符)
 \f 换页符
 \v垂直制表符
 \b匹配一个单词边界,也就是指单词和空格间的位置
   
 【11】匹配内容数量控制   
 + 至少重复一次          ab+   ab  abb  abb...
 * 重复0次或者更多次   ab*    a   ab   abb...
  ? 重复0次或者1次       ab?    a  ab
  {n} 只能重复n次         'ab{2}'    abb
  {n,} 最小出现n次,最大无限制    ab{2,}a跟着至少2个b
  {n,m} n是最小重复几次,m最多重复几次    ab{3,5}a跟着3到5个b
   
【12】match 方法
          字符串中提取数字
          var str = '9df44d454s4ssdf3ght3';
          var reg = /\d+/g; // 匹配数字,至少是一位数字
          var arr = str.match(reg,'');
          console.log(arr);

【13】exec是正则表达式的一种方法,正则表达式.exec(字符串),如果匹配符合则返回匹配结果,如果不符合则返回null;注意的是该方法不是属于字符串方法,而是正则表达式的方法     
 ^ 字符串的开始 例子:^the开始的有 they there
 $字符串的结束 例子: love$  都是以love结尾
     实例:用户名匹配
     var str = '$erkejltjl';
     var reg = /^[A-Za-z$_]\w{5,12}$/;
     var str1 = reg.exec(str);
     console.log(str1);

【14】贪婪匹配
          针对 *   +  {n,}尽可能多的从一段文本的开头匹配到末尾,而不是从开始匹配到第一个符合匹配的要求位置为止
          var str = '<span>test1</span><span>test2</span>';
          var reg = /<span>.*<\/span>/g;
          var arr = str.match(reg);
          console.log(arr);

【15】与非贪婪匹配
          从开始匹配到第一个符合匹配的要求位置为止
          *?    +?    {n,}?
          var str = '<span>test1</span><span>test2</span>';
          var reg = /<span>.*?<\/span>/g;
          var arr = str.match(reg);
          console.log(arr);

【16】前向声明
          (?=)
          var str1 = 'sbdsbd';
          var reg = /s(?=b)/g;
          str1 = str1.replace(reg,'前向声明');
          console.log(str1);
        【结果】要求ab需要连续,结果是s后面有b的s进行替换

【17】反前向声明
          (?!)
          var str1 = 'sbdsbds';
          var reg = /s(?!b)/g;
          str1 = str1.replace(reg,'反前向声明');
          console.log(str1);
        【结果】要求wb不需要连续,结果是s后面不能有b的s进行替换

【18】子表达式 ---小括号
           实例一:匹配 19,20开头的四位数年份
           var reg = /(19|20)\d{2}/g;
           var str = '19922002';
           console.log(str.match(reg,''));

          实例二:匹配border-top-color
          var str = 'border-top-color';
          var reg = /-(\w)/g;
          console.log(str.replace(reg,function($0,$1){
              //$0 代表所有 (跟整个正则表达式匹配的字符串或字符)  $1代表第一子项(相当于小括号里面匹配的字符串或者字符), 可以到$9
              console.log('$1'+$1);
              console.log('$0'+$0);
              return $1.toUpperCase();
          }));

正则表达式实例
  欢迎学习交流----梦幻雪冰
JavaScript 正则表达式 - 梦幻雪冰 - 梦幻雪冰
 
JavaScript 正则表达式 - 梦幻雪冰 - 梦幻雪冰
 
JavaScript 正则表达式 - 梦幻雪冰 - 梦幻雪冰
 
JavaScript 正则表达式 - 梦幻雪冰 - 梦幻雪冰
 
JavaScript 正则表达式 - 梦幻雪冰 - 梦幻雪冰
 
欢迎学习交流----梦幻雪冰


欢迎学习交流——梦幻雪冰独行冰海@font-face中iefix的详解 - 梦幻雪冰 - 梦幻雪冰
HTML5学堂贴吧——HTML5学堂
HTML5学堂微博——HTML5学堂
  评论这张
 
阅读(155)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017