基础语法
1.创建一个正则表达式
第一种方法——直接量(推荐):var reg = /test/;
第二种方法——new RegExp();:var reg = new RegExp(‘test’);
2.正则表达式的修饰符
•g (全文查找) 形式:/test/g
•i (忽略大小写) 形式:/test/i
•m (多行查找) 形式:/test/m
m修饰符的作用是修改^和$在正则表达式中的作用,让它们分别表示行首和行尾
3.正则表达式方括号(范围类匹配)
[0-9] ——匹配单个数字。
[a-z] ——匹配小写字母。
[A-Z] ——匹配大写字母。
[a-zA-Z]/[A-z] ——匹配所有大小写字母。
字符集合[abc]和反字符集合[^abc]
字符集合[abc]表示匹配a或者b或者c中的任意一个字符。
反字符集合[^abc]
^在方括号中表示的是类似“非“的意思,例如 [^abc] 就表示不能是a,b或者c中的任何一个
4.边界
①:开头和结尾——.^开头,结尾$
^n ——匹配任何开头为 n 的字符串。
例:reg = /^a/; 匹配以a为开头的字符串。
n$——匹配任何开头为 n 的字符串。
例:reg = /a$/;匹配以a为结尾的字符串。
②:单词边界与非单词边界
\b表示的边界的意思,也就是说,只有字符串的开头和结尾才算数。
例:reg = /\bc/; 表示匹配到的c要是字符串开始的c或者是结尾的c。
\B表示非边界的意思
例:reg = /\Bc/;表示匹配到的c要是字符串要是非边界的c,也就是非上面两种的c。
5.预定义类
①:预定义特殊字符
\t 水平制表符
\r 回车符
\n 换行符
\f 换页符
\cX 与X对应的控制字符(Ctrl+X)
\v 垂直制表符
\0 空字符
②:“.”字符
‘.’会匹配字符串中除了回车符和换行符\n之外的所有字符
③:单词字符和非单词字符
\w表示单词字符,等同于字符集合[a-zA-Z0-9_],也就是字母,数字和下划线。
\W表示非单词字符,等同于[^a-zA-Z0-9_]
④:数字字符与非数字字符
\d表示数字的意思,等同于[0-9];
\D表示非数字,等同于[^0-9]。
⑤:空白符和非空白符
\s表示空白符,等同于[ \t\n\x0B\f\r]。
【\f匹配换页符,\n匹配换行符,\r匹配回车,\t匹配制表符,\v匹配垂直制表符都是空白符的一种】
\S表示非空格字符,等同于[^ \t\n\x0B\f\r]
7.量词
①:a{n}
{1}表示一个的意思。
/a{1}/只能匹配一个a。
/a{2}/则会匹配两个连续的a。
以此类推
②:a{m,n}
a{2,4}的意思是,匹配连续的2个a或者4个a。
③:a{n,}
a{1,}表示1个以上的a。
a{2,}表示2个以上的a。
以此类推
c{n,}表示最少n个c,最多则不限个数。
④:* ,+,?
‘ * ’表示0次或者多次,等同于{0,}。
‘+’表示一次或者多次,等同于{1,}。
‘?’表示0次或者1次,等同于{0,1}。
贪婪与非贪婪模式
人都是贪婪的,正则也是如此。因此能匹配四个的时候,正则绝对不会去匹配三个。
只要在合法的情况下,它们会尽量多去匹配字符,这就叫做贪婪模式。
如果我们希望正则尽量少地匹配字符,那么就可以在表示数字的符号后面加上一个?。组成如下的形式:
{n,}?, *?, +?, ??, {m,n}?