美文网首页
review javascript 21:正则表达式

review javascript 21:正则表达式

作者: 蝴蝶结199007 | 来源:发表于2017-05-03 22:24 被阅读19次

    定义:专门规定字符串中【字符串的规律】

    (1)知识点

    • (1.1)备选字符集
    • (1.2)预定义备选字符集
    • (1.3)量词:字符集出现的次数
    • (1.4)选择和分组
    • (1.5)转义
    • (1.6)匹配指定位置
    • (1.7)预判
    • (1.8)汉字备选字符集

    (2)细化

    • (2.1)备选字符集:必须且只能多选一

    <pre>
    一组数字:[0-9]
    一组小写字母:[a-z]
    一组大写字母:[A-Z]
    </pre>

    • (2.2)预定义备选字符集

    <pre>
    \d --> [0-9]
    \w --> [0-9a-zA-Z_]
    \s --> 所有空字符,比如:空格 制表符 换行
    \D --> 非【\d】,除了数字
    . --> 除了换行和回车后的任意字符
    </pre>

    • (2.3)量词:字符集出现的次数

    <pre>
    {min,max} --> 从某个值到某个值
    {min,} --> 大于等于某个值
    {n} --> 固定数量
    ? --> 可有可无,最多一个

    •     --> 可有可无,数量不限
      
    •     --> 至少一个,数量不限
      

    </pre>

    • (2.4)选择和分组
      选择:<pre>
      或 --> |
      </pre>分组:
      <pre>
      分组 --> ( )
      </pre>

    • (2.5)转义

    <pre>
    转义 -->
    </pre>

    • (2.6)匹配指定位置

    <pre>
    开头匹配 --> ^
    结尾匹配 --> $
    开头或者结尾匹配 --> ^xx | xx$ (中间有|)
    完全匹配 --> ^xxx$ (中间没有|)
    单词匹配 --> \bxxx\b
    </pre>

    • (2.7)预判:在正式匹配前,先大概预判整个字符串的规则,多用于排除法
      4大类:数字,小写字母,大写字母,特殊符号

    • (2.8)汉字备选字符集:[\u4e00-\u9fa5]
      jQuery插件中已经封装了大量现成的正则表达式,比如电子邮件,html标签,url地址


    (3)方法

    定义 RegExp:

    var patt = new RegExp("e");
    
    • (3.1)test() 方法检索字符串中的指定值。返回值是 true 或 false。
      test() 方法检索字符串中的指定值。返回值是 true 或 false。

    • (3.2)exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。

    var patt = new RegExp("e","g");
    

    g:您可以向 RegExp 对象添加第二个参数,以设定检索

    • (3.3)compile() 方法用于改变 RegExp。

    ** Tips:做验证:都要前加^,后加$ **


    (4)实践

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>正则表达式</title>
    </head>
    <body>
    
    </body>
    </html>
    
    <script type="text/javascript">
        init();
        function init() {
            phoneNum();
        }
    
        /**
         * 手机号:
         * +86或0086   整体可有可无,最多1次
         * 数量不限个空字符
         * 1
         * 在34578中选其一
         * 9位数字
         * (\+86|0086)?\s*1[34578]\d{9}
         */
        function phoneNum(){
            /**
             * 手机号码匹配
             * 有开头和结尾的
             */
            var p1 = new RegExp(/^1[34578]\d{9}$/);
    
            /**
             * 手机号码匹配
             * 没有开头和结尾的
             */
            var p2 = new RegExp(/1[34578]\d{9}/);
    
            // 是否匹配
            console.log(p1.test("134"));//false
            console.log(p1.test("13122222222"));//true
            console.log(p1.test("a13122222222b"));//false
            console.log(p2.test("a13122222222b"));//true
    
            // 找出匹配内容
            console.log(p2.exec("a13122222222b"));//13122222222
        }
    
    </script>
    

    RegExp:http://www.w3school.com.cn/js/js_obj_regexp.asp
    RegExp 对象:http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp

    相关文章

      网友评论

          本文标题:review javascript 21:正则表达式

          本文链接:https://www.haomeiwen.com/subject/qmoktxtx.html