zoukankan      html  css  js  c++  java
  • js正则表达式(2)

    找到以某个字符串开头的字符串

    var myReg=/^(abc)/gim;

    如果不加m,那么只找一行,而加了m可以找到每行中以该字符串开头的匹配文本。

    如:

    abcsfsdfasd7890hklfahskfkaluiop7890-7890782ksdlafkasdnfklsdnf;lsabc
    
    sdfasd
    f
    asd
    f
    asd
    abcadaabcadfads

    不加m只能找到一次,加了能找到两次。

    String与正则表达式相关的方法

    (1)test()方法

    若找到则返回true,否则返回false。

    测试如下:

    function test1(){
            var con=content.innerText;
            window.alert(con);
            var reg=/abc/gi;
            if(reg.test(con)){
                window.alert("有abc");
            }else{
                window.alert("没有abc");
            }
        }

    用法是

    reg.test(con)

    而不是

    con.test(reg);

    支持正则表达式的String对象的方法。

    search()方法

    返回第一个匹配到的文本的起始位置。

    var str="visit W3School!";
    window.alert(str.search(/W3School/));

     输出:6.

    (2)match()

    它使用正则表达式模式对字符串执行搜索,并返回一个包含搜索结果的数组。

    function test2(){
            var con=content.innerText;
            var myreg=/abc/gi;
            res=con.match(myreg);
            for(var i=0;i<res.length;i++){
                window.alert(i+" "+res[0]);
            }
        }

    (3)replace()

    function test3(){
            var con=content.innerText;
            var myReg=/(d){4}/gi;
            //把四个数,换成 
            var newCon=con.replace(myReg,"这里原来是四个数");
            content.innerText=newCon;
        }

    函数的返回值是替换后的新字符串。

    (4)split(regExp)

    该方法可以把字符串按照正则表达式来分割。

    RegExp对象的属性

    1.  index 是当前表达式首次匹配内容的开始位置,从0开始计数。其初始值为-1,每次成功匹配时,index属性都会随之改变。

    2.  lastindex  是当前表达式模式首次匹配内容中最后一个字符的下一个位置,从0开始计数。

    index是静态属性,直接用类名调用。

    3.input  返回当前所作用的字符串

    4.leftContext  是当前表达式模式最后一个匹配字符左边的所有内容。

    5.rightContext  是当前表达式模式最后一个匹配字符串右边的所有内容。

    function test4(){
            var con=content.innerText;
            var myReg=/(d){4}/gi;
            while(res=myReg.exec(con)){
                window.alert("index="+RegExp.index+" left="+RegExp.leftContext+" right="+RegExp.rightContext);
            }
        }

    js的RegExp的反向

    js引擎在匹配的时候,会把各个子表达式的内容捕获到内存暂存。

    子表达式和捕获,反向引用的概念。

    反向捕获主要用来要求重复数字的地方。

    function test5(){
            var con=content.innerText;
            var myReg=/(d)(d)21/gi;
            while(res=myReg.exec(con)){
                window.alert(res[0]);
            }
        }

    请思考:aabbccdd找出这样的数。

    var myReg=/(d)1(d)2(d)3(d)4/gi;
            while(res=myReg.exec(con)){
                window.alert(res[0]);
            }

    匹配:五个数字加上一个-然后是如111222333这样的连续重复三次的9个数字

    var myReg=/(d){5}-(d)22(d)33(d)44/gi;
    while(res=myReg.exec(con)){
                window.alert(res[0]);
            }

    元字符--限定符

    {n,m}说明

    n表示至少出现的n次,最多m次,

    +说明:

    +表示出现1从到任意多次,比如/a+/gi,

    ?说明:

    ?表示出现0次到1次,比如/a?/gi,

    *说明:

    *表示0到任意个。

    [0-9]匹配0~9中任意一个数

    [a-z]匹配a~z中任意一个字母

    [^0-9]匹配不在0-9中的任意一个字符

    [^a-z]匹配不在a-z中的任意一个字符

    d 表示可以匹配0-9的任意一个数字,相当于[0-9]

    D 表示可以匹配到不是0-9中的任意一个字符,相当于[^0-9]

    w 匹配任意英文字符、数字和下划线,相当于[0-9a-zA-Z_]

    W 相当于[^a-zA-Z0-9],和w刚好相反

    s 匹配任何空白字符(空格,制表符等)

    S 匹配任何非空白字符,和s刚好相反。

    . 匹配出 之外的所有字符,如果要匹配.本身则需要使用.

    function test6(){
            var con=content.innerText;
            //var myReg=/1{3}/gi;
            //var myReg=/1{3,4}/gi;
            //var myReg=/1+/gi;
            //var myReg=/a1?/gi;
            //匹配a1和a;
            //var myReg=/[a-z]?/gi;
            //var myReg=/./gi;//匹配.
            var myReg=/./gi;//匹配除了
    的任意字符
            while(res=myReg.exec(con)){
                window.alert(res[0]);
            }
        }

    案例:匹配任意三个连续的字符

    w是匹配英文字符、数字和下划线,并不包括所有字符(不包括不可见字符)。

    所以/(w){3}/gi这样写,私以为不妥。

    应该这样写:/[dD]{3}/gi。这样写才能包括不可见字符。但是韩老师是这样写

    /([dD])1{2}/gi.

    特殊字符匹配,如21,20

    元字符-定位符

    ^ 符号 说明:匹配目标字符串的开始位置。

    $ 符号 说明:匹配目标字符串的结束位置。

    [^],^在[]中才是非的含义。

    ^和$匹配字符串开头和结尾,如果后面跟的字符串不是出现在开头或者结尾,则无法匹配到。

    //var myReg=/^han/gi;
            var myReg=/han$/gi;
            while(res=myReg.exec(con)){
                window.alert(res[0]);
            }

    转移字符,要用转义才能找到。

    需要用到转义符号的字符有以下:

    .  *  +  (  )  $  /    ?  [  ]  ^  {  }

    元字符-选择匹配符

    又是偶,我们在匹配某个字符串的时候是选择性的,即:既可以匹配这个,又可以匹配那个,这是你需要用到选择匹配符号 |

    var myReg=/(han|韩)/gi;

    综合案例:验证输入的字符串是不是一个电子邮件

    //综合案例:验证输入的字符串是不是一个电子邮件
        function test7(){
            var con=content.innerText;
            //var myReg=/[a-zA-Z0-9]+@([a-zA-Z0-9]+.)+(com|cn|net|org)$/;
            //没有用^,就无法以一系列字符打头
            //如果没有^,1430026911@q@qq.com就会被当做邮箱
            var myReg=/^[a-zA-Z0-9]+@([a-zA-Z0-9]+.)+(com|cn|net|org)$/;
            if(myReg.test(con)){
                window.alert("是邮件");
            }else{
                window.alert("不是邮件");
            }
        }
  • 相关阅读:
    渡一 20 date对象,定时器
    渡一 22 事件
    渡一 21获取窗口属性,dom尺寸,脚本化css
    渡一 18&19 选择器,节点类型&Dom基本操作
    渡一 16-2 dom操作初探
    渡一 16-1 try..catch,es5标准模式
    iOS 相关职位要求整理版
    Mac使用技巧
    issues about Facebook Login
    10_Segue Example
  • 原文地址:https://www.cnblogs.com/liaoxiaolao/p/9807922.html
Copyright © 2011-2022 走看看