正则表达式备忘录
鉴于自己的记性好像有点捉急,把经常忘记的正则插个眼,正儿八经笔试的时候一定要记起来啊!
1、一些基础:
^
:匹配输入字符串的开始位置。
$
:匹配输入字符串的结束位置。
*
:匹配前面的子表达式零次或多次。例如,zo 能匹配 "z" 以及 "zoo"。
+
:匹配前面的子表达式一次或多次。
?
:匹配前面的子表达式零次或一次。
{n}
:n 是一个非负整数。匹配确定的 n 次。
{n,}
:n 是一个非负整数。至少匹配n 次。
·
:匹配除 "n" 之外的任何单个字符。要匹配包括 'n' 在内的任何字符,请使用象 '[.n]' 的模式。
x|y
:匹配 x 或 y。例如'(z|f)ood' 则匹配 "zood" 或 "food"。
[xyz]
:字符集合。匹配所包含的任意一个字符。
[^xyz]
:负值字符集合。匹配未包含的任意字符。
[a-z]
:字符范围。匹配指定范围内的任意字符。
[^a-z]
:负值字符范围。匹配任何不在指定范围内的任意字符。
\b
:匹配一个单词边界,也就是指单词和空格间的位置
g
:表示全局模式,即模式将被应用到所有字符串,而非在发现第一个匹配项时立即停止。
i
:表示不区分大小写模式。
m
:表示多行模式,即在到达一行文本末尾时还在继续查找下一行中是否存在于模式匹配的项。
2、几个方法:
1.exec():捕获,有,返回一个Array;没有,返回null;
2.test():检验一个参数能不能匹配,返回的是true和false;
3.match():获取匹配到的结果;
4.replace(,):替换;
5.search():找到位置;
3、常用的例子:(从大佬那抄录下来的:https://www.cnblogs.com/moqiutao/p/6513628.html)
匹配第一个bat或者cat,不区分大小写: /[bc]at/i
或者 new RegExp("[bc]at","i")
;
匹配所有以"at"结尾的3个字符组合,不区分大小写:/.at/gi
;
只能输入数字:^[0-9]*$
;
只能输入n位的数字:^\d{n}$
只能输入至少n位的数字:^\d{n,}$
只能输入零和非零开头的数字:^(0|[1-9][0-9]*)$
只能输入有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
只能输入非零的正整数:^\+?[1-9][0-9]*$
只能输入由26个英文字母组成的字符串:^[A-Za-z]+$
只能输入由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
只能输入由数字、26个英文字母或者下划线组成的字符串:^\w+$
验证用户密码:以字母开头,长度在6~18之间,只能包含字符、数字和下划线:^[a-zA-Z]\w{5,17}$
验证是否含有^%&',;=?$"等字符:[^%&',;=?$\x22]+
只能输入汉字:^[\u4e00-\u9fa5]{0,}$
验证Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
验证身份证号(15位或18位数字):^\d{15}|\d{18}$
验证IP地址:^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$
匹配两个两个重叠出现的字符 例如,"aabbc11asd", 返回结果为aa bb 11三组match:(\w)\1
匹配成对的HTML标签:<(?<tag>[^\s>]+)[^>]*>.*</\k<tag>>
匹配 -90至90之间的整数(包括-90和90):^(-?[1-8][0-9]|-?[1-9]|-?90|0)$
匹配收尾空白字符:^\s+|\s+$