//元字符
/*
* 正则表达式由两种基本字符类型组成
* 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
/* 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.
/* 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);