欢迎进入广州凡科互联网科技有限公司网站
全国服务热线
4000-399-000
javascript正则表达式表述式的常见方式小结
时间: 2021-02-17 14:30 浏览次数:
在详细介绍正则表达式表述式英语的语法以前先学习培训下边好多个方式: 正则表达式表述式方式:test(),exec()String目标方式:match(),search(),replace(),split() test()方式: 使用方法:regexp目标

在详细介绍正则表达式表述式英语的语法以前先学习培训下边好多个方式:
正则表达式表述式方式:test(),exec()
String目标方式:match(),search(),replace(),split()


  test()方式:
     使用方法:regexp目标案例.test(标识符串)
     回到值:假如考虑regexp目标案例中定的正则表达式标准,回到true,不然回到false


  exec()方式:
      使用方法:regexp目标案例.exec(标识符串)
      回到值:假如 exec 方式沒有寻找配对,则它回到 null。假如它寻找配对,则 exec 方式回到一数量组,而且升级全局性 RegExp 目标的特性,以体现配对結果。数字能量数组的零元素包括了详细的配对,而第一到n原素中包括的是配对抽出现的随意一身高配对。这非常于沒有设定全局性标示 (g) 的 match 方式。
假如为正则表达式表述式设定了全局性标示,exec 从以 lastIndex 的值标示的部位刚开始搜索。假如沒有设定全局性标示,exec 忽视 lastIndex 的值,从标识符串的起止部位刚开始检索。


这儿必须备注名称下:上边回到值这一段话有关回到数字能量数组要我蒙蔽了好长时间,由于实验出来回到的全是一个长短的数字能量数组,也便是仅有一个原素.查了在网上许多材料也没有有关的详细介绍.打开之前买的 #8221;javascript 高級编程设计 #8221;一书,在P168有详细介绍(说白了反方向引入,之后详细介绍)
此外,有关 #8221;升级全局性 RegExp 目标的特性 #8221;我是那样了解的:升级RegExp目标的index和lastIndex特性,在设定了全篇配对主要参数后能够实验,每一次配对从上一个lastIndex刚开始检索.(能够融合下边的特性和后边的事例来感受)


      特性,各自是 input、index 和 lastIndex。Input 特性包括了全部被抓找的标识符串。Index 特性中包括了全部被抓找标识符串中被配对的子标识符串的部位。LastIndex 特性中包括了配对中最终一字符的下一个部位。



   match()方式:
     使用方法:string目标.match(regexp目标)
     回到值:假如 match 方式沒有寻找配对,回到 null。假如寻找配对回到一数量组而且升级全局性 RegExp 目标的特性以体现配对結果。
     备注名称:match和exec一个很显著的区别是设定了全篇检索主要参数g后它回到的数字能量数组已不是一个原素,只是全部的原素,第一个配对結果数字能量数组数量为0,第二个为1,为此类推.
     特性:同exec,match也是有index,lastIndex,input三个特性,实际意义也同exec
     exec和match区别较为的事例:


!DOCTYPE HTML PUBLIC #8220;-//W3C//DTD HTML 4.01//EN #8221; #8220;TR/html4/strict.dtd #8221;
html
  head
    meta http-equiv= #8221;Content-Type #8221; content= #8221;text/html; charset=GB2312 #8243; /
    title Untitled Document /title
  /head
  body
  script
   var str= #8221;hello,caolvchong.I love maomao.I should love her forever #8221;;
   var reg=/ao/g;
   function execstr(){
     var show=reg.exec(str);
     alert(show.index+ #8221;- #8221;+show.lastIndex+ #8221; #8211; #8221;+show);//exec只配对第一个,show是模块素数字能量数组,輸出第一个配对项.index和lastIndex各自是第一项的起止和完毕部位.要让exec配对所有,要用上边exec及第的事例,应用while循环系统
   }
   function matchstr(){
     var show=str.match(reg);
     alert(show.index+ #8221;- #8221;+show.lastIndex+ #8221; #8211; #8221;+show);//match配对所有考虑正则表达式表述式的式子.show一样是数量组,因为包括了全部配对新项目,一般有多种.javascript中輸出数字能量数组大将輸出所有数字能量数组中的內容.自然你还可以用for循环系统逐一輸出每个项,数字能量数组下标从0刚开始.此外,这儿的index和lastIndex是最终一个配对项的起止和完毕部位
   }
     
  /script
 被检索标识符串:Hello,my name is caolvchong.I love maomao.
 用/ao/g正则表达式表述式检索. br/
  input type= #8221;button #8221; value= #8221;exec方式检索 #8221; onclick= #8221;execstr() #8221;
  input type= #8221;button #8221; value= #8221;match方式检索 #8221; onclick= #8221;matchstr() #8221;
  /body
/html
上边编码的运作:


search()方式:
     使用方法:string目标.search(regexp目标)
     回到值:search 方式指出是不是存有相对的配对。假如寻找一个配对,search 方式将回到一个整数金额值,指出这一配对间距标识符串刚开始的偏位部位。假如沒有寻找配对,则回到 -1.
     留意:回到的仅仅与正则表达式表述式搜索內容配对的第一身高标识符串的部位.因此用全局性检索主要参数就沒有实际意义了.



  replace()方式:
     使用方法:string目标.replace(regexp目标|标识符串, #8221;更换的标识符串 #8221;)
     回到值:假如设定了全篇检索,则所有考虑的都将被更换;不然只更换第一个.回到更换后的标识符串.
     留意:replace中还能够接纳标识符串,但只更换第一个考虑标准的标识符串.



  split()方式:
     使用方法:string目标.split([切分符(能够是标识符串或正则表达式表述式[,限定輸出数字能量数组数量]])
     回到值:回到string目标被切分的数字能量数组
     留意:string目标不容易被split方式改动。切分符是可选择项,能够是标识符串或正则表达式表述式目标,它标志了隔开标识符串时应用的是一个還是好几个标识符。假如忽视该选择项,回到包括全部标识符串的单一原素数字能量数组.最终一个选择项限定輸出数字能量数组数量也是可选择项,该值用于限定回到数字能量数组中的原素数量。
此外,split自身就含有全篇配对的特点,因此能用并不用g主要参数
从上边剖析还可以看得出一点:正则表达式表述式比标识符串更换作用强劲.下边的事例还可以看得出.

事例:
!DOCTYPE HTML PUBLIC #8220;-//W3C//DTD HTML 4.01//EN #8221; #8220;TR/html4/strict.dtd #8221;
html
  head
    meta http-equiv= #8221;Content-Type #8221; content= #8221;text/html; charset=GB2312 #8243; /
    title 正则表达式表述式split /title
    script
     function split_by_str(){
       var txtnode=document.getElementById( #8220;txt #8221;);//获得div连接点
       var txt=txtnode.firstChild.nodeValue;//获得文字值
       var newtxt=txt.split( #8220;AI #8221;);//用AI来区划
       for(var i=0;i newtxt.length;i++){//輸出
         alert(newtxt[i]);
       }
     }
     function split_by_regexp(){
       var txtnode=document.getElementById( #8220;txt #8221;);//获得div连接点
       var txt=txtnode.firstChild.nodeValue;//获得文字值
       var regtxt=/ai/i;//还可以/ai/gi,这一不危害,split自身具备全篇配对作用
       var newtxt=txt.split(regtxt);//用AI来区划
       for(var i=0;i newtxt.length;i++){//輸出
         alert(newtxt[i]);
       }
     }
    /script
  /head
  body
    div id= #8221;txt #8221;
     我AI爱ai毛毛,Ai毛毛aI爱AI我!
    /div
    input type= #8221;button #8221; value= #8221;用标识符串AI来区划 #8221; onclick= #8221;split_by_str(); #8221;
    input type= #8221;button #8221; value= #8221;用正则表达式表述式Ai或ai或AI或aI来区划 #8221; onclick= #8221;split_by_regexp(); #8221;
  /body
/html


事例:
!DOCTYPE HTML PUBLIC #8220;-//W3C//DTD HTML 4.01//EN #8221; #8220;TR/html4/strict.dtd #8221;
html
  head
    meta http-equiv= #8221;Content-Type #8221; content= #8221;text/html; charset=GB2312 #8243; /
    title 正则表达式表述式replace /title
    style
     .color_name{/*界定高亮度款式:情况淡黄色,字体样式粗字体鲜红色*/
       color:red;
       font-weight:bold;
       background:yellow;
     }
    /style
    script language= #8221;JavaScript #8221; type= #8221;text/javascript #8221;    
     function change_name(){//更换文字涵数
       var txtnode=document.getElementById( #8220;txt #8221;);//获得div连接点
       var txt=txtnode.firstChild.nodeValue;//获得文字值
       var regstr=/tom/gi;//正则表达式表述式:配对tom,全篇分不清尺寸写查找
       var newtxt=txt.replace(regstr, #8221;草履虫 #8221;);//所有更换
       document.getElementById( #8220;txt #8221;).firstChild.nodeValue=newtxt;//更改文字显示信息
     }
     function color_name(){//高亮度涵数
       var txtnode=document.getElementById( #8220;txt #8221;);//获得div连接点
       var txt=txtnode.firstChild.nodeValue;//获得文字值
       var regstr=/tom/gi;//正则表达式表述式:配对tom,全篇分不清尺寸写查找
       var arr=txt.match(regstr);//match方式获得考虑配对的全部标识符串
       for(var i=0;i arr.length;i++){//解析xml考虑配对的全部标识符串
         var newtxt=txt.replace(regstr, #8217; span >          txtnode.innerHTML=newtxt;//不可以用nodeValue改动,nodeValue不兼容转换为html,因此用innerHTML
         }      
     }
    /script
  /head
  body
  div id= #8221;txt #8221;
   Hello,everyone!
   His name is tom.
   Do you know Tom?
   TOM is a boy who loves football and PC.
   So,do you want to make friends with TOm.
  /div
  #8212; #8212; #8212; #8212; #8212; #8212; #8212; #8212; #8212; #8212; #8212; #8212; #8212; #8211; br/
 把上边的Tom(包含各种各样方式)高亮度或转换为草履虫 br/
  #8212; #8212; #8212; #8212; #8212; #8212; #8212; #8212; #8212; #8212; #8212; #8212; #8212; #8211; br/
  input type= #8221;button #8221; value= #8221;高亮度TOM #8221; onclick= #8221;color_name(); #8221;
  input type= #8221;button #8221; value= #8221;转换TOM #8221; onclick= #8221;change_name(); #8221;
  /body
/html


事例:(是依据上边exec方式更改了下)


!DOCTYPE HTML PUBLIC #8220;-//W3C//DTD HTML 4.01//EN #8221; #8220;TR/html4/strict.dtd #8221;
html
  head
    meta http-equiv= #8221;Content-Type #8221; content= #8221;text/html; charset=GB2312 #8243; /
    title 正则表达式表述式 /title
    script language= #8221;JavaScript #8221; type= #8221;text/javascript #8221;
   function regexp_str(){
     var getStr=document.getElementsByTagName( #8220;input #8221;)[0].value;
     var regexpStr;
     var searchType=document.getElementsByTagName( #8220;input #8221;)[1].value;
     if(searchType==1){ //是不是尺寸写分辨
       regexpStr=/cat/i;
     }
     else{  
       regexpStr=/cat/;
       }
     var arr = getStr.search(regexpStr);
     if(arr==-1){ //沒有寻找回到-1
       alert( #8220;键入的标识符串中沒有出現cat #8221;);
     }
     else{ //寻找回到第一次配对的部位
       alert( #8220;第一个配对cat的标识符串出現部位: #8221;+arr);
     }
   }
   function checkbox_value(){
     var searchType=document.getElementsByTagName( #8220;input #8221;)[1].value;
     if(searchType==1)
       searchType=0;
     else
       searchType=1;
     document.getElementsByTagName( #8220;input #8221;)[1].value=searchType;
   }
  /script
  /head
  body
    input type= #8221;text #8221;
   忽视尺寸写: input type= #8221;checkbox #8221; checked value= #8221;1 #8243; onchange= #8221;checkbox_value(); #8221;
    input type= #8221;button #8221; value= #8221;查寻 #8221; onclick= #8221;regexp_str(); #8221;
  /body
/html


事例:
编码:
!DOCTYPE HTML PUBLIC #8220;-//W3C//DTD HTML 4.01//EN #8221; #8220;TR/html4/strict.dtd #8221;
html
  head
    meta http-equiv= #8221;Content-Type #8221; content= #8221;text/html; charset=GB2312 #8243; /
    title 正则表达式表述式 /title
    script language= #8221;JavaScript #8221; type= #8221;text/javascript #8221;
   function regexp_str(){//配对正则表达式表述式涵数
     var getStr=document.getElementsByTagName( #8220;input #8221;)[0].value;//获得键入
     var regexpStr,arr;
     var searchType=document.getElementsByTagName( #8220;input #8221;)[1].value;//是不是全篇检索
     if(searchType==1){//全篇检索
       regexpStr=/cat/g;//g,全篇检索主要参数
       while ((arr = regexpStr.exec(getStr)) != null){//当还没有配对完以前
       alert(arr.index + #8220;- #8221; + arr.lastIndex + arr + #8220; #8212; #8221;+arr.input);
//index是寻找配对的起止部位;lastIndex是寻找配对的末部位+1.例如这一事例:要配对cat,但你键入的是1cat2cat3,则第一次配对index为1,lastIndex为4.第二次配对index为5,lastIndex为8.从这儿还可以看得出,lastIndex是配备了全篇检索后下一个检索的刚开始部位.
//arr是輸出全部数字能量数组,因为仅有一个长短,輸出的便是配对的标识符串
//input特性是在这里里是键入的标识符串,理论来讲,便是被检索的全篇,例如上边举例说明的1cat2cat3
       }
     }
     else{ //一次配对
       regexpStr=/cat/;
       arr = regexpStr.exec(getStr);
       alert(arr.index + #8220;- #8221; + arr.lastIndex + arr + #8220; #8212; #8221;+arr.input); //因为仅仅一次配对,也不要像上边那般用循环系统了(要不然出現配对状况,每一次自始至终从头开始刚开始检索,不可以做到null,深陷死循环系统)
       }    
   }
   function checkbox_value(){//更改checkbox的值
     var searchType=document.getElementsByTagName( #8220;input #8221;)[1].value; //获得当今checkbox值
     if(searchType==1) //checkbox数值1改成0,不然改成1
       searchType=0;
     else
       searchType=1;
     document.getElementsByTagName( #8220;input #8221;)[1].value=searchType;
   }
  /script
  /head
  body
    input type= #8221;text #8221;
   全篇检索: input type= #8221;checkbox #8221; checked value= #8221;1 #8243; onchange= #8221;checkbox_value(); #8221;
    input type= #8221;button #8221; value= #8221;查寻 #8221; onclick= #8221;regexp_str(); #8221;
  /body
/html


事例:(第一篇正则表达式表述式事例)
!DOCTYPE HTML PUBLIC #8220;-//W3C//DTD HTML 4.01//EN #8221; #8220;TR/html4/strict.dtd #8221;
html
  head
    meta http-equiv= #8221;Content-Type #8221; content= #8221;text/html; charset=GB2312 #8243; /
    title 正则表达式表述式 /title
    script language= #8221;JavaScript #8221; type= #8221;text/javascript #8221;
   function regexp_str(){
     var getStr=document.getElementsByTagName( #8220;input #8221;)[0].value; //获得键入值
     var regexpStr=/cat/; //创建正则表达式目标,配对为cat
     if(regexpStr.test(getStr)) //正则表达式目标的test方式,后边会详细介绍(便是配对回到true,不然回到false)
       alert( #8220;键入的标识符串 #8221;+getStr+ #8221;包括 #8221;+regexpStr.source); //正则表达式目标的source特性,后边会详细介绍(便是回到正则表达式目标设定的配对值)
     else
       alert( #8220;键入的标识符串 #8221;+getStr+ #8221;不包括 #8221;+regexpStr.source);
   }
  /script


/head
  body
    input type= #8221;text #8221;
    input type= #8221;button #8221; value= #8221;查寻 #8221; onclick= #8221;regexp_str(); #8221;
  /body
/html


2016 嘿!编码 copy right  
嘿!编码-测算机程序编写新手入门网站,关心手机软件开发设计全新技术性,收集企业网站建设受欢迎資源。
手机软件开发设计全集,企业网站建设手册,程序猿必上的程序编写新手入门网站。 
下一篇:没有了


Copyright © 广州凡科互联网科技有限公司 版权所有 粤ICP备10235580号
全国服务电话:4000-399-000   传真:021-45545458
公司地址:广州市海珠区工业大道北67号凤凰创意园