参考个人博客:http://www.zhuzhuman.com/nav-1/type-1/article/18.html
正则可以规定在文本或字符串中要检索或替换的内容,可以是表达式的形式。然后可以在文本或字符串中匹配自己给定好的内容。
1. JS中的正则表达式写法
1. var reg = new RegExp('表达式',flag);
2. var reg = /表达式/flag;
注:
flag:修饰符,修饰符可以同时写多个。
1. i : 忽略大小写;
2. g : 全局匹配;
3. m : 多行匹配;
###2. 正则中字符的含义###
. : 任意字符(除换行符外);
\d : 数字0-9;
\D : 非数字0-9的字符;
\w : 0-9或a-z或A-Z或_ ;
\W : 除数字字母下划线以外的字符;
\s : 空格、TAB、换页符、换行符;
\S : 非\s;
\r : 回车;
\n : 换行;
\v : 垂直制表符;
\t : 制表符;
\f : 换页符;
3. 正则中的选择、分组
1. | : 选择(或); 例:/ab|cd/ 表示匹配ab或者cd,只要一个匹配就能匹配成功;
2. () : 分组;正则中的(),先正常匹配,然后把匹配到的值以括号为单位分组;返回值里面会以括号为单位进行分组后以数组形式返回。可以用下标取到里面对应的值;
例:
var str = 'aabbccdd';
var reg1 = /(aa)(bb)/ ;
str.match(reg1); // ['aabb','aa','bb']; 不仅匹配到了aabb还把两个括号中匹配到的值分别显示了出来。
var reg2 = /aa(bb)/;
var reg3 = /(a+)(b)+(c)+/;
str.match(reg3); // ['aabbcc','aa','b','c']
var reg4 = /(a)(b)(c)/;
str.match(reg4); // null,没匹配到'abc',也不会分组;
4. 正则中的范围符号
[] : 字符范围内; 例:[0-9]数字0-9;[a-n]小写字母a到n;[0-9A-Za-z]数字0-9小写a-z大写A-Z;
[^] : 字符范围外;例:[^0-9]数字0-9以外的字符;
^ : 行首(书写时写在开头);例:^Hi以Hi开头的字符;^[0-9]以数字0-9开头的字符;^[^0-9]以非数字开头的字符;
$ : 行尾(书写时写在最后);例: Hi$以Hi结尾的字符;
\b : 单词边界;例:\bhello匹配前面有空格的单词hello;
\B : 非\b;例:\Bhello匹配前面没有空格的单词hello;
[\u4e00-\u9fa5] : 匹配中文;
5. 正则中的量词
{n,m} : 最少出现n次,最多出现m次;
{n,} : 最少出现n次;
{,m} : 最少出现0次(既没有),最多出现m次;
{n} : 刚好出现n次;
? : 代表{0,1};
* : 代表{0,};
+ : 代表{1,};
例:/a{5}/ 表示正好连续出现5个小写a的字符;
6. 正则中的字符串转译
\ : 用于转译字符;(即通常在"\"后面的字符不按原来意义解释)
有时候我们匹配一些特殊的字符时,比如:.,\,/,^,$,+,?,|,(,[,),{,],}等有特殊含义的字符时,需要加上\进行转译,将其转译为单纯的一个字符 。
例:当我们要匹配一个美元符$时,不能直接写$,因为一个$代表行尾,所以要用\$;这代表单纯匹配一个美元符。
7. 正则常用的函数
1. search();返回首次匹配到的值的下标。
str.search(reg);
2. match();返回首次匹配的值,若正则表达式里面有用g声明全局匹配,则返回所有满足匹配条件的值。返回值是一个数组。
str.match(reg); 返回值是一个数组
var a = 'aabcfa';
var reg1 = /a/;
var reg2 = /a/g;
a.match(reg1); // ['a'];
a,match(reg2); // ['a','a','a'];
3. replace(正则,替换内容);替换首次匹配到的值,若正则声明全局匹配,则替换所有匹配到的值;
var a = 'aabbcca';
var reg1 = /a/;
var reg2 = /a/g;
a.replace(reg1,'b'); // babbcca;
a.replace(reg2,'b'); // bbbbccb;
4. test();用于检测能否匹配到值,返回值为布尔值,匹配到为true;否则为false;
注: 使用方法是正则写在前面,字符串写括号里
reg.test(str);
var a = 'abc';
var reg1 = /a/;
var reg2 = /d/;
reg1.test(a); // true;
reg2.test(a); // false;