收藏多年的正则表达式笔记大全,绝对是干货!

1、常见正则
(1)检查邮政编码//共 6 位数字,第一位不能为 0
/^[1-9]\d{5}$/
(2)检查文件压缩包 //xxx.zip\xxx.gz\xxx.rar
/^\w+\.(zip|gz|rar)$/
(3)删除多余空格 //
str.replace(/\s+/,'');
(4)删除首尾空格
str.replace(/^\s+/,''); //去除开头的空格
str.replace(/\s+$/,''); // 去除结尾的空格
(5)//删除所有的空格
str.replace(/\s/g,'');
(6)//删除前后的空格
str.replace((^\s+)|(\s+$),'')
(7)电子邮件( xxxxx @ xxxx(.xxxx)+)
/^\w+@\w+(\.\w+)+$/
(8)手机号(1开头任意数字) 1(3|5|7|8|4)\d{9}
/^1\d{10}$/
(9)身份证
/^\d{17}(\d|X)$/
422422 19660101 5810
421087 19890101 121X
^[1-9]\d{5}[19|20]\d{2}\d{7}(\d|X)$
(10)日期 (合法日期格式:xxxx-xx-xx或 xxxx/xx/xx或xxxx.xx.xx)
/^\d{4}[-\/\.]\d{2}[-\/\.]\d{2}$/
(11)只能输入中文
str.replace(/[^\u4e00-\u9fa5]/g,'');
(12)账户名只能使用数字字母下划线,且数字不能开头,长度在6-15之间
/^[a-zA-Z_]\w{5,14}$/
(13)验证IP
(xxx.)xxx.xxx.xxx|
254.245.255.255
240.196.19.5
/^((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$/
(14)汉字在正则中表示为[\u4e00-\u9fa5]
(15)字母和数字表示为A-Za-z0-9
(16)因此邮件名称部分的正则表达式整理如下: 
电子邮件( xxxxx @ xxxx(.xxxx)+)
/^\w+@\w+(\.\w+)+$/
(17)手机号(1开头任意数字) 1(3|5|7|8|4)\d{9}
/^1\d{10}$/
 
2、正则表达式的特殊字符
\w 匹配一个可以组成单词(变量)的字符(包括字母,数字,下划线)
如[\w]匹配“$5.98”中的5,等价于[a-zA-Z0-9_] 。
\W 匹配一个不可以组成单词的字符
如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9_]。
\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符
\v 匹配一个重直制表符
\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等
\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/
\b 匹配一个单词的边界 (单词是以空格分割的)
/\bm/ 匹配 “ moon " 中的 'm';
/oon\b/ 匹配 “ moon " 中的 'oon',因为 'oon' 位于字符串的末端,后面没有单词字符;
\B 匹配一个单词的非边界
 
3、直接量字符(转义字符)
\f 换页符
\n 换行符
\r 回车
\t 制表符
\v 垂直制表符
\/ 一个 / 直接量
\\ 一个 \ 直接量
\. 一个 . 直接量
\* 一个 * 直接量
\+ 一个 + 直接量
\? 一个 ? 直接量
\| 一个 | 直接量
\( 一个 ( 直接量
\) 一个 ) 直接量
\[ 一个 [ 直接量
\] 一个 ] 直接量
\{ 一个 { 直接量
\} 一个 } 直接量
 
4、方括号
[abc] 查找方括号之间的任何字符。
[^abc] 查找任何不在方括号之间的字符。
[0-9] 查找任何从 0 至 9 的数字。 [1-9]\d+
[a-z] 查找任何从小写 a 到小写 z 的字符。
[A-Z] 查找任何从大写 A 到大写 Z 的字符。
[A-z] 查找任何从大写 A 到小写 z 的字符。
[adgk] 查找给定集合内的任何字符。
[^adgk] 查找给定集合外的任何字符。
(red|blue|green) 查找任何指定的选项。
 
5、元字符
. 查找单个字符,除了换行和行结束符,等价于[^\n]
\w 匹配一个可以组成单词(变量)的字符(包括字符,数字,下划线), 如[\w]匹配“$5.98”中的5,等价于[a-zA-Z0-9_] 。
\W 查找非单词字符。匹配一个不可以组成单词的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9_]。
\d 匹配一个数字字符,/\d/ 等价于 /[0-9]/
\D 匹配一个非数字字符,/\D/ 等价于 /[^0-9]/
\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等
\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/
\b 匹配单词边界。
\B 匹配非单词边界。
\0 查找 NUL 字符。
\n 查找换行符。
\f 查找换页符。
\r 查找回车符。
\t 查找制表符。
\v 查找垂直制表符。
\xxx 查找以八进制数 xxx 规定的字符。
\xdd 查找以十六进制数 dd 规定的字符。
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。
 
6、量词
c{n} 匹配包含 n 个 c 的序列的字符串。
c{m,n} 匹配包含 m 到 n 个 c 的序列的字符串。
c{n,} 匹配包含至少 n 个 c 的序列的字符串。
c+ 匹配任何包含至少一个 c 的字符串,等价于c{1,} 。
c* 匹配任何包含零个或多个 c 的字符串,等价于c{0,}
c? 匹配任何包含零个或一个 c 的字符串,等价于 c{0, 1}
c$ 匹配任何结尾为 c 的字符串。
^c 匹配任何开头为 c 的字符串。
?=c 匹配任何其后紧接指定字符串 c 的字符串。
对其后紧跟 "all" 的 "is" 进行全局搜索.
var str="Is this all there is"; var patt1=/is(?= all)/g;
?!c 匹配任何其后没有紧接指定字符串 c 的字符串。
对其后没有紧跟 "all" 的 "is" 进行全局搜索:
var str="Is this all there is"; var patt1=/is(?! all)/gi;

猜你喜欢

转载自www.cnblogs.com/lishixiang-007/p/11282720.html