正则:
1)、正则:正则是用来操作(匹配和捕获)字符串的一系列规则
test()匹配的结果返回值是布尔值: 符合规则返回true 不符合返回false
捕获:把需要捕获到得内容拿出来,捕获的是字符串
正则只和字符串打交道
2)、正则的创建方式:
1.字面量创建 var reg=//
2.实例创建: var reg=new RegExp()
区别:
1)实例创建的时候 特殊含义的字符需要转义(\转义符);
2)实例的创建的时候,可以进行变量的拼接,字面量不可以进行变量的拼接;
3)正则的组成:
1、元字符
1)代表特殊含义的元字符
\ 转义符
. 除了\n 意外任何字符
\n 换行 一般用在控制台
^ 开始
$ 结束
| 或
\b 开头结尾和空格
() 分组
\d 数字 \w 数字字母下划线 \s 空格
\D 非数字 \W 非数字字母下划线 \S 非空格
[abc] abc中任意一个 [^abc]除了abc三个中任何一个
[a-z] a-z任何一个 [^a-z]除了a-z任何一个
2)代表量词元字符
* 0到多
+ 1到多
? 0次或1次
{n} 正好n次
{n,} 至少n次
{n,m} n次到m次
2.修饰符:
g 全局 global
i 忽略大小写
2.正则的运用
1)匹配手机号:
匹配手机号 11位
第二位 3,4,5,7,8,
var reg=/^1[34578]\d{9}$/;
2) 2.有效数字 +20 20 -20 20.333 200.333 2 0 02 不包含
思路:
1.[+-]?
2.如果为一位数的话 \d 如果为多位数的话,不能以0作为开头 [1-9]
3.小数 \.\d+
用到| 时候一定要写小括号 ()
var reg=/^[+-]?(\d|([1-9]\d+))(\.\d+)?$/;
3)邮箱
iijjjjj_-jssf@qq 163.com .cn
var reg=/^([\w-]+)@[1-9a-zA-Z]{2,4}(\.[a-zA-Z]{2,3}){1,2}$/;
4)身份证号
var reg=/^\d{17}(\d|X)$/i;
5) 非空验证
var reg=!/^\s+$/;
6)去除首尾空格
/* var str=' jkjyddgljjg ';
var reg=/(^\s+)|(\s+$)/g;
var res= str.replace(reg,'');
console.log(res);
console.log('('+res+')');
7)验证年龄 18或19
/*var reg=/^(18|19)$/
18-65
18 19 20-59 60-65
var reg=/^(18|19)|([2-5]\d)|(6[0-5])$/;
8)中文名字
var reg=/^[\u4e00-\u9fa5]{1,4}$/;
3)总结:
(): 用到|的时候要用()
提高优先级
[]: 只能出现一位数
在中括号里面的特殊的字符比如:. + - 等不再具有特殊意义,就是普通的字符
5.总结捕获方式:
exec() 每次不到到一项就返回
replace()
match() // 一次把符合我们规则的内容都捕获到 返回一个数组中