一、正则的创建方式
1.字面量创建
var reg = /day/ig;
2.构造函数创建
var reg = new RegExp("day", "ig");
二、正则表达式的组成
a.规则(表达式) 写在//之间
b.修饰符: i(忽略大小写)、 g(全局匹配(匹配整个字符串,多次) 如果不加g,默认只匹配一次)
三、正则的方法
test() :判断字符串中是否含有符合规则的某个或某段字符。有则返回true;没有则返回false
var str = "It was a beautiful day";
var reg = /beautiful/i;
var result = reg.test(str);//运行结果:true
exec():类似字符串的match方法,将符合规则的某个或某段字符提取出来放到数组中(注意: 始终只匹配一次, 加g也没有用)
var str = "It was a beautiful day beautiful day";
var reg = /beautiful/ig;
var arr = reg.exec(str);//运行结果:["beautiful"];
四、正则表达式中的字符
a.普通字符 a-z A-Z 0-9 eg./beautiful/
b.特殊字符(在正则表达式中有特殊含义的字符)
(1)特殊字符-限定符【指定正则表达式中子表达式需要匹配多少次才满足】
* 匹配前面的子表达式出现0次或多次 = {0,}
eg.var reg = /go*d/;(*前面的字符o出现0次或多次)
+ 匹配前面的子表达式出现1次或多次 = {1,}
eg.var reg = /go*d/;(*前面的字符o出现1次或多次)
? 匹配前面的子表达式出现0次或1次 = {0,1}
eg.var reg = /(good)?/;(*前面的字符good出现0次或1次)
{n} 匹配n次(精确匹配)
eg.var reg = /go{2}d/;({2}前面的字符o出现2次)
{n,} 至少匹配n次
{n,m} 至少匹配n次,最多m次
(2)特殊字符-定位符
^ 匹配字符串开始的位置 以...开头
$ 匹配字符串结束的位置 以...结尾
【注意】:单独使用 ^和$ 不会将规则定死;同时使用 ^ 和 $ 才会在一定程度上将规则定死 eg.var reg = /^g/; //判断字符串是否以g开头,后面无所谓
eg.var reg = /^ga/; //判断字符串是否以g开头 且 临近的一个字符是a(也可以理解为判断字符串是否以ga开头)
eg.var reg = /good$/; //判断字符串是否以good结尾,前面的不管(qwer good符合该正则表达式)
eg.var reg = /^good$/; //字符串必须是good才满足该正则表达式
eg.var reg = /^go{2,}d$/; //字符串必须以g开头,紧接着必须至少有2个o,且以d结尾(gooood符合)
(3)特殊字符-字符匹配符【匹配字符集合中的任意一个】
/[xyz]/ 字符集合,匹配xyz中的任意一个字符(含有'或'的关系)
/[0123456789]/ => /[0-9]/ 匹配数字
/[qwertyuiopasdfghjklzxcvbnm]/ => /[a-z]/ 匹配小写字母 /[QWERTYUIOPASDFGHJKLZXCVBNM]/ => /[A-Z]/ 匹配大写字母
/[0-9a-zA-Z_]/ 匹配数字、大小写字母、_中的任意一个
注意:在字符匹配符中 ^ 代表取反
/[^xyz]/ 匹配除了xyz以外的任意一个字符
/[^0-9]/ 匹配非数字(不严谨,非数字的范围太大)
注意:字符匹配符中可以使用字符簇
/[0-9a-zA-Z_$]/ => /[\w$]/
字符簇(官方已经规定好的字符集合)
\d 匹配数字 [0-9]
\D 匹配非数字 [^0-9]
\w 匹配数字 大小写字母 _ [0-9a-zA-Z_]
\W 匹配非数字 大小写字母 _ [^0-9a-zA-Z_]
\s 匹配空白字符(换行符(\n)产生的空格 / 回车符(\r)产生的空格 / 空格)
\S 匹配非空白字符(除了空白符以外的任意字符)
. 匹配除换行符(\n)以外的单个字符(基本上是任意字符)
[\u4e00-\u9fa5] 匹配中文
【拓展】. 本身代表任意字符 => 若需要转化位普通字符. => 转义\.
(4)特殊字符-选择匹配符
| 可以匹配多个规则(在正则表达式中代表"或"的关系 一般配合()使用)
/(red|green|blue)/ (不能使用中括号)
与字符匹配符区别:[xyz]字符集合,匹配xyz中的任意一个字符,是单个字符的'或'的关系
(5)特殊字符-转义字符 【本身在正则表达式中含有特殊含义(特殊字符),如果想作为普通字符来使用就需要进行转义】
eg. * 转义 \*
eg. + 转义 \+
eg. ? 转义 \?
五、常用正则表达式举例
由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$