正则验证
正则表达式
Regular Ecpression 简写 regex/regexp/RE
1.描述了一种 字符串的 特征模型
2.其返回值 是一个 对象 通过该对象提供的方法和属性 能够对字符串进行匹配处理
3.查找字符串
4.既可以精准查找 也可以 模糊匹配
一、正则表达式 的声明
1.通过构造函数的形式 来创建 表达式
使用字面量来创建正则表达式会更简单,而用构造函数创建正则表达式会更灵活。
语法:var 变量 = /正则表达式/匹配模式
返回值 为一个对象 拥有两个方法
reg.test(要查询的字符串)
返回值为boll类型 ture/false
reg.exec(要查询的字符串)
返回值 数组
第一个元素 是匹配到的字符串的首字符
第二个元素 是该字符串的首字符的下标
第三个元素 是输入的字符串
正则表达式 既可以 制定规则 也可以直接进行查找
var reg = /a/i;
var str = "A";
var res = reg.test(str);
console.log(res); // true
2.通过 字面量的形式来写 表达式
两个参数 /参数1/参数2
参数一 匹配的特征字符串
参数二 修饰字符串
二、正则表达式 的书写规范
匹配的特征字符串 书写在 / / 内
可以精准匹配
var str1 = '3d354af45f534af354fda354af';
var reg2 = /\w/;
console.log(reg2.test(str1));
console.log(reg2.exec(str1));
//模糊匹配 通过元字符
// var reg1 = /\D/;
/*
常用 元字符
\d 一个数字字符
\D 一个非数字字符
\w 一个 数字 字母 下划线 字符
\W 一个 非数字 字母 下划线 字符
\s 一个空白符号
\S 一个非空白符号
或 | 3|4 /\d|\s/
任意[] [abc] abc 中任何一个元素 被匹配
[a-z] 匹配a-z 26小写字母
[A-Z] 26个大写英文字母
[A-z] 按照ASCII码 从大写A~小写z 中间所有的字符 包括 ASCII 91~96 的字符
[A-Z][a-z] 26个英文字母
[Az-] 参照 [abc]
[\u4e00-\u9fe5] 中文区间 Unicode编码 表示 中文编码
*******注意 正则表达式 如果是一个区间的话 先后顺序按照 ASCII码 升序排布
^ 非 [^abc] 不包含abc 返回符合条件的第一个字符
开头 ^\d 必须以数字开头 (必须写在表达式开头)
写在中括号里面 代表 不包含 某个元素 匹配除了目标字符外的所有字符
写在表达式开头 代表 必须以目标条件或者字符 开头
必须以数字结尾
量词的控制
X{n} 匹配连续 n 个 X
a{6} a连续出现6次
\d{6} 连续6个数字
X{n,m} 匹配最小出现n 次 最大出现 m次
匹配的时候 满足最小条件 开始匹配
到最大条件 当次 匹配结束
X{n,} 匹配最小出现 n次 最多无上限
模糊个数
X? 匹配 0个 或者 1个
等同于{0,1}
X* 匹配 0个 或者连续多个 正则表达式贪婪模式
等同于{0,}
X+ 匹配 1个 或者连续多个
等同于{1,}
X*? 非贪婪模式
///////注意
{n,m}? 只要有? 代表 当前匹配 尽量按照最小要求匹配
{n,m}? 尽量匹配 n 个字符 但是也可以 最多重复 m 次
?? 尽量匹配 允许不满足条件 但是 满足条件 最多匹配一次 相当于 {0,1};
+? 尽量匹配 1 次 但是也可以匹配任意次 相当于 {1,}?
*? 尽量不匹配 也可以匹配任意次 相当于{0,}?
/ 代表 字符 /
g 全局 写在//最后面 /\d/g 在全局范围内 搜索 符合要求的字符
没有g 不管是 exec() 还是 match() 都返回 匹配到的第一个字符
有 g exec() 返回符合要求的 第一个字符
match() 返回一个数组 数组内包括 所有符合要求的字符
有一个lastIndex属性 自动查找下一个