目录
定义:正则表达式(正则对象) 是js中给我们提供的一种 用来定义监测规则的对象,我们可以通过正则对象 定义一些检测规则 用来检测字符串
完整定义:正则是一组由 特定字符 或 特定字符的组合 所组成的 表达式
正则的创建
-
字面量创建
-
var 变量 = /正则内容/
-
-
实例化创建
-
var 变量名 = new RegExp("正则内容")
-
正则修饰符
每一个正则对象 都可以设置修饰符 来给正则对象 添加一些特定的功能
-
修饰符的写法:
//字面量创建
var 变量 = /正则内容/修饰符
//实例化创建
var 变量 = new RegExp("正则内容","修饰符")
-
我们实际开发中 比较常用的修饰符有以下两个
-
i(ignore) 可以忽略大小写
-
g(global) 可以全局监测
-
正则的检测方法
-
正则自身的方法
-
test
-
用法:正则.test("要检测的字符串");
-
作用:使用正则 检测要检测的字符串 如果字符串 满足正则的规则,返回值为true 如果不满足 返回false
-
注意:正则检测字符串的规则 就是看看字符串中是否包含正则规定的内容 如果包含 就检测成功 如果不包含 就失败
-
-
exec
-
用法:正则.exec("要检测的字符串");
-
作用:使用正则 检测要检测的字符串 如果字符串满足正则的规则,返回值为一个伪数组 否则 返回null
-
-
-
字符串的方法
-
replace
-
用法:字符串.replace(正则表达式,新片段)
-
作用:使用正则 检测字符串 将检测到的结果 使用 新片段 替换
-
-
match
-
用法:字符串.match(正则表达式);
-
作用:和正则的exec作用相同
-
-
search
-
用法:字符串.search(正则)
-
作用:使用正则在字符串中 进行检测 将检测到的结果的索引 返回出来
-
注意:获取的是第一次检测到的结果的索引
-
-
split
-
用法:字符串.split(正则表达式)
-
作用:使用正则表达式 检测到的结果 作为 切割标识 将字符串切割为数组
-
-
正则的元字符
-
正则是一个由 一些特定字符 和 特定字符的组合 组成的 表达式
-
这里说道的特定字符 和 字符组合 就是元字符
-
元字符:在正则中 可以表示一些特定含义的 字符 或 字符组合
-
. :表示 要检测 除了换行符(/n)之外的任意字符
-
/./
-
-
[范围]
-
表示 要检测 指定范围内的字符
-
/[0-9a-zA-Z]/ 表示要检测 任意数字或字母
-
-
[^范围]
-
表示 要检测 指定范围之外的字符
-
/[^0-9a-zA-Z]/
表示 要检测 特殊字符 或 汉字
-
-
\d 和 \D
-
\d : 表示要检测任意数字 相当于[0-9]
-
/\d/ 就表示 要检测一位任意数字
-
-
\D : 表示要检测任意非数字字符 相当于
[^0-9]
-
-
\w 和 \W
-
\w : 表示要检测 数字、字母或下划线 相当于[0-9a-zA-Z_]
-
\W : 表示要检测 非数字、字母、下划线 相当于
[^0-9a-zA-Z_]
-
-
\s 和 \S
-
\s : 表示要检测 空格 \n \t(制表符) 等空白字符 相当于[ \n\t]
-
\S : 表示要检测 非空白字符
-
-
\b 和 \B
-
\b : 表示要检测 字符边界
-
\B : 表示要检测 无字符边界
-
在编写英文语句的时候 我们需要使用空格 将单词隔开 这里的空格就是字符边界
-
-
$和^
-
/^内容/ 表示 正则要求 被检测的字符串 必须以指定内容开头
-
/内容$/ 表示 正则要求 被检测的字符串 必须以指定内容结尾
-
/^内容$/ 表示 正则要求 被检测的字符串的内容 必须和正则要求的内容完全相同 严格模式
-
-
正则的量词
在正则中我们可以在指定内容的后面 添加量词 来表示指定内容的出现次数
-
?
-
/内容?/
-
表示 前面的内容出现0次或1次
-
-
+
-
/内容+/
-
表示 前面的内容出现 至少一次
-
-
*
-
/内容*/
-
表示 前面的内容 可以出现任意多次
-
-
{}
-
{n}
-
/内容{数字}/
-
表示 前面的内容 要出现 指定数字的次数
-
-
{n,m}
-
/内容{n,m}/
-
表示 前面的内容 要出现 至少n次 至多m次
-
-
正则的特殊操作
-
或运算:
-
在正则中 也存在或运算 运算逻辑 和 逻辑运算符完全相同
-
写法: |
-
例如:/^张(三丰|翠山|无忌)$/ 表示我要检测的字符串内容 可以是张三丰 也可以是 张翠山 也可以是张无忌
-
-
分组
-
在正则中 我们使用小括号 包裹起来的内容 就被称为 分组
-
分组的意思是 小括号内部的内容是一个整体
-
注意:带有分组的正则在验证的时候 会先使用正则表达式 对字符串进行检测 之后 再分别使用每一个分组 对字符串 进行验证
-
单独获取分组的验证结果
-
写法:RegExp.$n
-
作用:获取第n个分组的检测结果
-
注意:n不是索引 是编号 因此从1开始
-
注意:在单独获取分组的检测结果之前 一定要先 使用正则对字符串进行检测。
-
-
前瞻后顾
-
前瞻:?=
-
写法:/内容1(?=内容2)/
-
表示:要检测 后面内容为 内容2 的 内容1
-
-
负前瞻
-
写法:/内容1(?!内容2)/
-
表示:要检测 后面内容不是内容2 的 内容1
-
-
后顾
-
写法:/(?<=内容2)内容1/
-
表示:要检测 前面内容是内容2的内容1
-
-
负后顾
-
写法:/(?<!内容2)内容1/
-
表示:要检测 前面内容不是内容2的内容1
-
案例
//编写检测密码的正则表达式
//密码的检测要求是 6-11位 数字和字母的组合
var reg = /(?!^\d{6,11}$|^[a-zA-Z]{6,11}$)^[a-zA-Z0-9]{6,11}$/