1.正则表达式的两种写法

     var reg = /test/i;
     var reg1 = new RegExp('test','i');

    其中i为正则表达式修饰符
     i : 执行对大小写不敏感的匹配。(匹配时忽略大小写)
     g : 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
     m : 执行多行匹配。

2.支持正则表达式的 String 对象的方法

search:检索与正则表达式相匹配的值。

var reg = /[test]/g;
var str = 'acvftst';
console.log(str.search(reg));//4

match:找到一个或多个正则表达式的匹配。

var reg = /[test]/g;
var str = 'acvftst';
console.log(str.match(reg));

replace:替换与正则表达式匹配的子串。

var reg = /[test]/g;
var str = 'acvftst';
console.log(str.replace(reg,'a'));

//字符串去重
var str = 'aaaaaaaaabbbbbbbcccc';
var reg = /(\w)\1*/g;
str.replace(reg,'$1');//abc
//($1、$2、...、$99:与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。)

split:把字符串分割为字符串数组。

var reg = /[test]/g;
var str = 'ascsvtftst';
console.log(str.split(reg));

3.方括号

[test]:查找括号中的任意字符

var reg = /[test]/g;
var str = 'acvftst';
console.log(str.match(reg));

[^test]:查找不在括号中的字符

var reg = /[^test]/g;
var str = 'acvftst';
console.log(str.match(reg));

[0-9]:查找任何从 0 至 9 的数字。

[a-z]:查找任何从小写 a 到小写 z 的字符。

[A-Z]:查找任何从大写 A 到大写 Z 的字符。

[A-z]:查找任何从大写 A 到小写 z 的字符。

var reg = /[0-9][a-z]/g;
var str = '134acvf24tst';
console.log(str.match(reg));

(red|blue|green):查找任何指定的选项。

var reg = /[0-9]|[a-z]/g;
var str = '134acvf24tst';
console.log(str.match(reg));

4.元字符

. : 查找单个字符,除了换行和行结束符。

var reg = /a.v/g;
var str = '134acvf24tst';
console.log(str.match(reg));

\w : 查找单词字符。

\W : 查找非单词字符。

var reg = /\w/g;
var str = '1ac4tt=!';
console.log(str.match(reg));

\d : 查找数字。

\D : 查找非数字字符。

\s : 查找空白字符。

\S : 查找非空白字符。

var reg = /\s/g;
var str = '1ac 4tt=!';
console.log(str.match(reg));

\b : 匹配单词边界。

\B : 匹配非单词边界。

var reg = /\b4t/g;
var str = '1ac 4tt=!';
console.log(str.match(reg));

\0 : 查找 NUL 字符。

\n : 查找换行符。

\f : 查找换页符。

\r : 查找回车符。

\t : 查找制表符。

\v : 查找垂直制表符。

5.量词

n+ : 匹配任何包含至少一个 n 的字符串。

var reg = /\d+/g;
var str = '123ac42t1t=!';
console.log(str.match(reg));

n* : 匹配任何包含零个或多个 n 的字符串。

var reg = /\d*/g;
var str = '123ac42t1t=!';
console.log(str.match(reg));

n? : 匹配任何包含零个或一个 n 的字符串。

var reg = /\d?/g;
var str = '123ac42t1t=!';
console.log(str.match(reg));

n{X} : 匹配包含 X 个 n 的序列的字符串。

var reg = /\d{2}/g;
var str = '123ac42t1t=!';
console.log(str.match(reg));

n{X,Y} : 匹配包含 X 至 Y 个 n 的序列的字符串。

var reg = /\d{2,3}/g;//(如果能匹配3个在一起的数字就先匹配3个在一起的数字)
var str = '123ac42t1t=!';
console.log(str.match(reg));

n{X,} : 匹配包含至少 X 个 n 的序列的字符串。

var reg = /\d{2,}/g;//(连在一起的数字能多就多)
var str = '1234ac42t1t=!';
console.log(str.match(reg));

n$ : 匹配任何结尾为 n 的字符串。

^n : 匹配任何开头为 n 的字符串。

var reg = /^\d{3}/g;
var str = '123 123ac42t1t=!';
console.log(str.match(reg));

?=n : 匹配任何其后紧接指定字符串 n 的字符串。

var reg = /\d(?=\d{3})/g;//(对其后紧跟三个数字的数字进行匹配)
var str = '123123ac42t1t=!';
console.log(str.match(reg));

?!n : 匹配任何其后没有紧接指定字符串 n 的字符串。

6.RegExp 对象方法

exec : 检索字符串中指定的值。返回找到的值,并确定其位置。

var reg = /ac/g;
var str = '123123ac42t1t=!';
console.log(reg.exec(str));
console.log(reg.lastIndex);

test : 检索字符串中指定的值。返回 true 或 false。

var reg = /ac/g;
var str = '123123ac42t1t=!';
console.log(reg.test(str));//true