js最初就是用来做表单验证的
什么是正规表达式:
- regular expression js中RegExp类表示正则表达式 它是一个描述字符模式的对象
正则的作用:
- 用来验证字符串是否符合规则
- 从字符串中获取一部分符合规范的内容
创建正则对象:
1.通过new关键字来声明一个正则对象
- 第一个参数:正则的主体, 字符串
- 第二个参数 :修饰符 字符串
- i 不区分大小写
- g 全局匹配
- m 换行匹配
var str = new RegExp("hello","ig");
2.通过字面量来赋值
- var str = /主体/修饰符;
var str = /are/i;
test:
- 格式:正则对象.test(“字符串”);
- 返回值:布尔值
- 功能:校验字符串是否符规则
var str = /are/i;
str.test("hello word");
exec:
- 格式:
正则对象.exec(“字符串”) - 功能:
- 在匹配字符串,如果匹配成功,则返回的是一个数组,数组中存放的是第一个符合条件的内容 ;如果匹配不成功,则返回是null
- 如果有全局修饰符g,则exec第二次捕获会从第一次捕获的位置开始向后去查找。
- 直到找不到了,返回null
- 再次捕获时,则从头开始。
var str = "bre you ok Bre";
var reg = /bre/ig;
alert(reg.exec(str));
字符串的函数:
match()
- 格式:字符串.match(正则)
- 功能:在字符串中匹配符合规则的内容
- 返回值:数组,匹配成功的内容;匹配没有成功,返回null
lin = "im fine ok";
console.log(lin.match(/im/));
console.log(lin.match(/Im/i)); //加i修饰词支持大写,不加i修饰词表示为null;
replace()
- 格式: 字符串.replace(oldStr/正则,newStr);
- 功能: 将新的字符替换掉旧的字符
lin = "xbx im fine ok ";
console.log(lin.replace(/x/ig,"*"));
split()
- 格式: 字符串.split(“分割字符”/正则)
- 功能: 用分隔符将字符串进行分割
- 返回值: 分割后的字符串组成的数组
lin = "Thank you im fine ok ";
console.log(lin.split(/ /g));
search()
- 功能: 找到符合条件的第一个字符的位置(下标)
- 格式: 字符串.search(字符串/正则)
- 返回值: 找到则返回下标;未找到则返回-1
lin = "Thank you im fine ok ";
console.log(lin.search(/k/i));//空格算一个占位,全局只显示第一个的下标,未找到时返回-1,
元字符
元字符:
组成正则的基础符号,具有特殊的含义。
- " . " 匹配单个的任意字符
var just = "just do it";
var a = /jus.t/;
alert(a.test(just));
[范围] 匹配单个范围内的字符
- [0-9] 匹配一个数字 范围为 0-9
var just = "just do it";
var a = /jus[0-9]t/;
alert(a.test(just));
- [0-9a-zA-Z_]
var just = "just do it";
var a = /jus[0-9a-zA-Z_]
alert(a.test(just));
[^范围] 匹配任意一个除了范围内的字符
- [^0-9] 匹配任意一个非数字的字符 = [0-9]取反
var just = "just do it";
var a = /jus[^0-9]t/;
alert(a.test(just));
- \w 匹配单个的字母,数字和下划线 = [0-9a-zA-Z_]
var just = "just do it";
var a = /jus\wt/;
alert(a.test(just));
- \W 匹配单个非字母数字下划线
var just = "just do it";
var a = /jus\Wt/;
alert(a.test(just));
- \d 匹配单个数字 = [0-9]
var just = "just do it";
var a = /jus\dt/;
alert(a.test(just));
- \D 匹配单个非数字 [^0-9]
var just = "just do it";
var a = /jus\Dt/;
alert(a.test(just));
空白字符:
- \s 匹配一个任意的空白字符 空格 /n /t
- \S 匹配一个任意的非空白字符
var just = "just do it";
var a = /jus\st/;
var a = /jus\St/;
alert(a.test(just));
锚字符:
- ^ 行首匹配 必须以它后面字符开头
- $ 行尾匹配 必须以它后面字符结尾
var just = "just do it";
var a = /^j/;
var a = /t$/;
限定元字符:(x:表示任意的单个字符)
格式:
- x? 匹配0个或者1个x
- x+ 匹配至少一个x字符
- x* 匹配任意一个x字符
- x{m,n} 匹配至少m个字符,最多n个 包含n
- x{m} 匹配m个字符
- x{m,} 匹配m个–多个
- () 小括号括起来的字符串会被当成一个字符去处理
- | 类似或
var str = "Lolita, light of mymy life, fire of my loins";
var reg = /^l.*s$/i; //表示 以l开头,并且以这个l结尾 只匹配l
var reg = /b*/ig;
var reg = /^\w{3}$/;
var reg = /^\w{3,5}$/;
var reg = /(my){2}/;
练习:
//1.判断压缩包;zip rar 7z
var a = "考研资料.zip";
var sk = /\.(zip|rar|7z)$/;
document.write(sk.test(a));
//2.判断是否为11位手机号码
var a = "13323456789";
var sk = /^1\d{10}$/;
document.write(sk.test(a));
//4.判断年份;
var a = "2000";
var sk = /^[1-2]\d{2}[0-9]$/;
document.write(sk.test(a));
//5.以英文开头,长度6-11
var a = "a_12342";
var sk = /^[a-zA-Z]\w{5,10}$/;
document.write(sk.test(a));
//6.匹配整数,true:-11 +11 1,2,3 false: 11.1 -01
var a ="0";
var sk = /(^(-|\+)?[1-9]\d*$)|^0$/;
document.write(sks.test(as));