文章目录
- 一、正则的概念和意义
- 二、正则的创建
- 三、正则的写
- 四、正则的使用
- 五、读正则
- 六、练习
一、正则的概念和意义
- 正则:正确的规则,用来约束字符串的规则,正则的数据类型是对象,正则对象,正则表达式
- 正则的意义:
- 节省代码量,减少代码冗余
- 并没有节省性能
- 如:从一串杂乱的字符串中取出所有的数字,放在数组中
var str = “asd256asd834as5da38sd512zcacas";
var linshi='';
var arr=[];
for(var i = 0; i < str.length; i++){if(str[i]>=0 && str[i]<=9){linshi += str[i];}else{if(linshi != ''){arr.push(linshi)linshi = '';}}
}
console.log(arr);
二、正则的创建
- 字面量:
var reg1 = /a/;
- 构造函数:
var reg2 = new RegExp("a");
- 区别:
- 构造函数可以根据变量创建正则
- 修饰符放在构造函数的第二个参数
- 构造函数内,基本元字符书写成
\\d
,字面量为\d
三、正则的写
- 写正则:正则的语法,正则中的每个符号的含义
- 修饰符
g
:全局i
:忽略大小写
- 量词:
+
:前一个部分,出现1次或以上?
:前一个部分,出现0次或1次*
:前一个部分,出现0次或以上{n}
:前一个部分,出现n次{n,}
:前一个部分,出现n次或以上{n,m}
:前一个部分,出现n次到m次
- 特殊
- 子串:
()
,包裹起来的部分是一个子串,表示一个整体 - 或:
|
,或 - 中元符:
[]
,包裹起来的部分默认是或的关系- 一个中元符用于匹配一位字符
- 非:
[^]
,如:非数字:[^0-9]
- 范围符:
-
,配合中元符使用,如:[a-z]
,表示从a到z
- 子串:
- 转义符(元字符):
\d
:表示所有数字,同:[0-9]
\D
:除了所有数字,同:[^0-9]
\w
:表示所有数字字母下划线,同:[0-9a-zA-Z_]
\W
:除了所有数字字母下划线,同:[^0-9a-zA-Z_]
\s
:表示空白符,一般用于匹配空格\S
:表示非空白符.
:通配符,表示所有字符,慎用\
:转义符,将,在正则中有含义的符号,转成普通字符匹配
- test验证时
^
:标记从字符串开头的位置验证$
:标记验证到字符串结尾的位置
四、正则的使用
- 查找:从字符串中查找子串,是否存在,截取
str.search(reg)
str.match(reg)
reg.exec(str)
- 区别:
- 替换:找到老字符,替换成新字符
str.replace(reg, newStr)
- 贪婪特性:尽可能的多匹配
- 验证:判断字符串是否符合规则要求
reg.test(str)
- 默认只验证字符串的局部,可以通过^和$标记开始和结尾的位置
五、读正则
- 邮箱:
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/
- URL:
/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
- HTML标签:
/^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/
- 中文:
/^[\u2E80-\u9FFF]+$/
- 正则手册:
正则表达式手册
六、练习
- 编写正则,通过文件名验证是否是图片文件
- xxx.jpg
- xxx.png
- xxx.gif
- xxx.jpeg
- xxx.webp
- xxx.doc
- xxx.exe
- xxx.ppt
- 身份证号
- 上网查规则
- 敏感词过滤
- 多个敏感放在一个数组中
- 使用正则完成
- 利用构造函数创建正则
- 基础:连续的相同的敏感词替换成一个*
- 高级:连续的不同的敏感词替换成一个*
- 表单验证
- 用户名验证:数字字母下划线中划线中文,5~10位
- 密码验证:数字字母,6~10位
- 重复密码验证:与正则无关
- 手机号验证
- 邮箱验证
- 要求:每个输入框,边输入边验证输入框内容,在当前输入框后显示提示语
- 要求:点击按钮,所有输入框全部正确,提示成功,否则,提示失败
- 升级版:提示 失败的项
- 密码强度
- 使用正则验证密码强度
- 有三个块,默认为灰色
- 弱:亮一个
- 中:亮两个
- 强:亮三个