正则表达式详细讲解

  • 正则表达式
    正则表达式: 按照一定的规则组成的一个表达式, 作用主要来匹配字符串
    表达式组成: 由元字符或者限定符组成的一个式子
    *
    *元字符:
    *       .  表示的是: 除了\n以外的任意一个字符 例: "aa12"这个字符串中, 有任意一个字符就匹配成功
    *       [] 表示的是: 范围
    *       [0-9]表示的是0-9之间任意一个数 例 : "abcd"-->[0-9] 不成立
    *                                  例:100-199这个区间-->[1][0-9][0-9]
    *       [159]表示的是1,5,9这三个数的任意一个数
    *       [a-z]表示的是小写字母中的任意一个
    *       [A-Z]表示的是大写字母中的任意一个
    *       [0-9a-zA-Z]表示的是所有数字或者所有字母中的任意一个 例: "@" -->不成立
    *       [] 另一个含义: 把正则表达式中的元字符的意义干掉 [.] --->代表的只是一个点
    *
    *       | 表示的是: 或者 例 : [0-9]|[a-z]表示的是要么是一个数字, 要么是一个小写字母
    *       ()表示的是: 分组和提升优先级 ([0-9])|([a-z]) 先从左边开始匹配
    *
    * 限定符, 也叫元字符
    *       *  表示的是前面的表达式出现0次到多次 例 :([a-z][0-9])* --->"abcdef" 返回true
    *       +  表示的是前面的表达式出现了1次到多次 例 :  ([a-z][0-9])+  --->"abcdef" 返回false
    *                                               例: [a-z][9]+  -->"asd9234324" 返回true
    *       ?  表示的是前面的表达式出现了0次到一次 例:   [a-z][9]?  -->"asd92394324" 返回true
    *      {}  表示的是更加明确前面的表达式出现的次数
    *      {0,} 表示的是前面的表达式0次到多次 跟 * 一样
    *      {0,1} 表示的是前面的表达式0次到1次 跟 ? 一样
    *      {4} 表示的是前面的表达式4次
    *      {,10} ===>错误
    *
    *      ^  表示的是以什么开始, 或者取非
    *      ^[a-z]表示的是以小写字母开始
    *      [^a-z]表示的是 取非, 即非小写字母
    *      [^0-9A-Za-z]表示的是 表示的特殊符号和汉字
    *      $ 表示的是以什么结束 例 : [0-9][a-z]$ 必须以小写字母结束
    *      严格模式 : ^[0-9]+[a-z]{1,5}$ 以数字开始, 字母结束 例 : "1asd2398a"  返回false
    *
    *
    *      \d  数字中任意一个
    *      \D  非数字中任意一个
    *      \s  空白符中一个
    *      \S  非空白符中一个
    *      \w  非特殊符号 _
    *      \W  特殊符号
    *      \   转义符

1.例子:正则表达式匹配汉字

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
请输入您的中文名字: <input type="text" id="username">
<script>
    //  [一-龥]   [\u4e00-\u9fa5]   解码:  unescape("\u4e00")  编码:  escape("中文")
    // console.log(escape("我喜欢你"));
    document.getElementById("username").onblur = function () {
        var reg = /^[\u4e00-\u9fa5]{2,4}$/;
        if(reg.test(this.value)){
            this.style.border = "1px solid green";
        }else{
            this.style.border = "1px solid red";
        }
    }

</script>
</body>
</html>

2.正则表达式的其他用法

 var str = "你好. 我的电话号码是13545156815, 我的扣扣是304413116";
    //把里面所有的数字全部都显示出来  .match(正则式子): 在字符串中检索指定的值, 或者找到多个能被匹配的字符串
    //  g 代表全局匹配
    var arr = str.match(/\d{9,11}/g);
    console.log(arr);

    var str2 = "2019-06-04";
    var arr2 = str2.match(/(\d{4})[-](\d{2})[-](\d{2})/g);
    console.log(RegExp.$4);// $n 是内置对象RegExp的属性

    var str3 = "小明真的是太帅了, 没有原因, 就是很帅";
    str3 = str3.replace(/\u5e05/g, "库");
    console.log(str3);

    var str4 = "  哦买嘎, 买 它   ";
    //str4 = str4.trim();
    //清除所有的空白字符
    str4 = str4.replace(/\s/g, '');
    console.log(str4);

    var str5 = "hhkkHH";
    //把所有h都换成kk 不管大小写
    str5 = str5.replace(/[h]/gi, 'k');  // i : 忽略大小写
    console.log(str5);

你可能感兴趣的:(正则表达式详细讲解)