ES5基础之正则表达式02:范围类、预定义类和边界字符

1.范围类

    //元字符

    /*
     * 正则表达式由两种基本字符类型组成
     * 1.原义文本字符:例如123abc
     * 2.元字符:元字符是在正则表达式中有特殊含义的非字母字符
     */

    //常见特殊符号:. * ? $ ^ | \ ( ) { } [ ]

    /* 1.字符类
     * 我们可以使用元字符[]来构建一个简单的类
     * 所谓类是指符合某些特性的对象,一个泛指,而不是特值某些字符
     * 表达式[abc]把字母a字母b字符c归为一类,表达式可以匹配这类的字符,而不是匹配abc
     */
    var string = 'a1b2c3';
    string = string.replace(/[abc]/g, 'X');
    console.log(string);

    // 在 [] 前面加 ^ 表示取反,比如:var reg = /[^abc]/g 表示匹配非abc;
    var string = 'a1b2c3';
    string = string.replace(/[^abc]/g, 'X');
    console.log(string);

    /* 2.范围类
     * 比如:使用字符类匹配数字则为[0123456789] 这样比较麻烦
     * 正则表达式为我们提供了范围类
     * 我们可以使用 [a-z] 来连接两个字符表示从a-z的任意字符
     * [0-9]表示任意数字
     * 在 [] 组成的类内部是可以连写的 [a-zA-Z0-9];
     */
    var string = 'a1b2c3ccee654ADAD';
    string = string.replace(/[a-zA-Z0-9]/g, 'X');
    console.log(string);//全部都为X

    //注意:- 在 []内部表示范围的意思,如果要匹配 - ,可以直接加载后面
    var string = 'a1b-2c3c-cee654A-DAD';
    string = string.replace(/[a-zA-Z0-9-]/g, 'X');
    console.log(string);//全部都为X

 2.预定义类

    /* 3.预定义类
     * 正则表达式提供预定义类来匹配常见的字符类
     * 字符-等价类-含义 
     * .  <=> [^\r\n] 除了回车换行之外的所有字符 
     * \d <=> [0-9] 数字字符 digital
     * \D <=> [^0-9] 非数字字符 digital
     * \s <=> [\t\n\x0B\f\r] 空白字符 space
     * \S <=> [^\t\n\x0B\f\r] 非空白字符 space
     * \w <=> [a-zA-Z0-9_] 字母数字下划线 word
     * \W <=> 非字母数字下划线 word
     */

    //实例1:匹配一个 ab + 数字 + 任意字符 的字符串
    // ab\d.

3.边界字符

    /* 4.边界字符
     * 正则表达式提供了几个常用边界匹配字符
     * 字符-含义
     * ^  - 以 xxx 开始
     * $  - 以 xxx 结束
     * \b - 单词边界
     * \B - 非单词边界 
     */

    //关于单词边界的使用:需要单词边界--双边
    var string = 'this is a boy, this is a girl';
    string = string.replace(/\bis\b/g, 'my')
    console.log(string);

    //关于单词边界的使用:不需要单词边界--单边
    var string = 'this is a boy, this is a girl';
    string = string.replace(/\Bis/g, 'my')
    console.log(string);

    //关于单词边界的使用:不需要单词边界--双边
    var string = 'this is a boy, this is a girl';
    string = string.replace(/\Bis/g, 'my')
    console.log(string);

    //关于单词边界的使用:^
    var string = '@123@abc@';
    string = string.replace(/@./g, 'Q');
    console.log(string);

    var string = '@123@abc@';
    string = string.replace(/^@./g, 'Q');
    console.log(string);

    //关于单词边界的使用:$
    var string = '@123@abc@';
    string = string.replace(/.@/g, 'Q');
    console.log(string);

    //关于单词边界的使用:$
    var string = '@123@abc@';
    string = string.replace(/.@$/g, 'Q');
    console.log(string);

 

posted on 2017-01-03 22:20  码先生  阅读(1214)  评论(0编辑  收藏  举报