• 关于RegExp的一些使用的练习(代码加注释)


    <!DOCTYPE html>
    <html>
    <head>
        <title>title</title>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
    
        <script src="jquery.min.js"></script>
        <script src="bootstrap.min.js"></script>
        <script src="vue.min.js"></script>
    </head>
    
    
    <body>
        <div id="app">
               <input type="text" v-model="x">
               <input type="button" value="验证" @click="validate">
        </div>
    
        <script>
    
            var vm = new Vue({
                el: '#app',
                data:{
                    x: '100000000'
                },
                methods: {
                    validate: function(){
                       
                    }
                }
            });
    
            //常用方法:
            //reg.test(str);
            //str.match(reg); 返回匹配完的结果字符串
    
            //参考文档W3CSchool:http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp
            //原则:默认是贪婪匹配(匹配出的字串即最长匹配子串)
    
            var reg1 = /abc/; //查找模式串'abc'
    
            var reg2 = new RegExp("abc");
    
            var reg3 = new RegExp(reg2); //创建Reg2的副本给Reg3
    
            var reg4 = RegExp(reg2); //直接把reg4指向reg2,操作reg4等于直接操作reg2
    
            var reg5 = /abc/i; //执行对大小写不敏感的匹配
    
            var reg6 = /abc/g; //执行全局匹配,在查找到第一个后不会停止
    
            var reg7 = /abc/m; //执行多行匹配,当待匹配字符串具有换行符
    时,能够进行多行匹配
    
            var reg8 = /[0-9][0-9][0-9]/g; //匹配连续三位是任意数字的字串,查找到一个以后不会停止
    
            var reg9 = /[0-9A-z][cd][d]/g; //匹配出的字串第一位是任意数字或字母,第二位是c或d,第三位是d,并为全局匹配
    
            var reg10 = /[^a]/; //匹配第一个非a的字串
    
            var reg11 = /[a|b]/; //匹配第一个a或b的字串
    
            var reg12 = /(abc|bcd)[0-9]/; //匹配第一个abc+任意数字或bcd+任意数字
    
            var reg13 = /w/; // w等价于:[0-9A-z_]
                              // W等价于:^w
    
            var reg14 = /d/; // d等价于:[0-9]
    
            var reg15 = /[wd]/; //可以在表达式写元字符!!
    
            // s等价于:[
    	f
    v ] 换行符+换页符+回车符+制表符+垂直制表符+空格
    
            var reg16 = /c/; //表示C作为单词边界,且是单词头部
    
            var reg17 = /u597d/; //Unicode编码也能匹配汉字 u597d:好
    
            var reg18 = /w{2,}/g; //匹配所有任意2个以上任意字符
    
            var GoogleEmailValidate = /[sS]*@gmail.com/; //判断是否是谷歌邮箱的字符串
    
            var reg19 = /(w)111/; //  小括号内是子表达式,而1指引用第一个子表达式的内容(反向引用)
                                      //  整个表达式意思是:字符串以xxxx(x为任意字符)的形式匹配
                                      //  Tip:子表达式匹配的内容会出现在结果数组中,可以当数组使,前提是不是全局匹配!
    
            // 关于split方法,如果含有子表达式,则结果数组中保留分割条件字符,否则分割条件字符不保留
            // 关于replace方法,如果参数不是正则表达式,则替换不是全局替换,若是全局的正则表达式匹配,才会进行全局替换
            // str.replace(new RegExp('/(w)1(w)2/'), "$2$2$1$1") $1$2是反向引用了前面表达式中的子表达式
            
    
            // 将the-first-name变为驼峰命名theFirstName,原理是将'-f'替换为'F'
            // var reg = /-(w)/g;
            /* str.replace(reg, function($, $1){
                    return $1.toUpperCase();
                })
    
                function是匹配一次执行一次,若是全局匹配,则会执行一到多次
            */
    
            //正向断言:
            var reg20 = /a(?=b)/g; //匹配任何出现在b之前的a,但不包括b
    
    
            //调整为非贪婪匹配
            var reg21 = /a*?/g; //包含任意多个a的子串,但'?'表示用非贪婪方式(匹配出的子串能少则少),最后匹配到多个空字串
                
            //字符串去重
            // var reg = /(w)1*/g;
            /* str.replace(reg, "$1");
            */
    
            //2014百度题:将表示金额的字符串替换成:100.000.000的形式;
            //var reg = /(?=(B)(d{3})+$)/g; 匹配出:d{3}+ 以3为个数的倍数的一个或多个数字
            //                                      $        结尾的
            //                                      B       非单词边界  防止出现.100.000.000
            //                                      ?=n      紧跟
            //组合成:匹配 紧跟 以3为个数的倍数的一个或多个数字结尾的 且是 非单词边界的 空字符串
            //str.replace(reg, ".");      
                   
        </script>
    </body>
    </html>

    参考文档注释中有,就是W3CSchool的官方文档,感兴趣的朋友可以测一测玩玩,感受一哈RegExp的强大,最后一个百度面试题当时号称史上最难,我没测出来,希望了解的朋友提点一下我,谢谢了...

  • 相关阅读:
    二分查找
    215. Kth Largest Element in an Array
    myeclipse导入web项目报错解决
    oracle替换字段中的空格
    sql变更表名
    cmd文件操作--- attrib命令
    oracle导入dmp文件
    java.lang.IllegalArgumentException: Page directive: invalid value for import 异常解决
    JDK_jvisualvm访问远程weblogic服务
    页面传值中文编码
  • 原文地址:https://www.cnblogs.com/Joey44/p/10000088.html
Copyright © 2020-2023  润新知