一、定义:是js提供的一个语法
二、作用:处理字符集
三、3种处理(正则表达式的作用):
1、验证字符串:是不是纯数字,字母开头,字符串的规则
正则.test(字符串) - 布尔值
字符串.search(正则) - 下标或-1
2、提取字符串:从一个很长的字符串中,获取到其中满足规则的一段
正则.exec(字符串) - 数组,数组的下标0,就是提取出来的小字符串
字符串.match(正则) - 数组,数组的下标0,就是提取出来的小字符串
3、替换字符串:
字符串.replace(正则,新的内容)
四、正则表达式的创建
直接定义
语法:/正则表达式主体(规则)/
构造函数定义方式: - new 构造函数
五、正则表达式的组成
1、普通字符
var str = 'asdwtayfgdyfwyasudgyuw'; var reg = /as/ var arr = str.match(reg) console.log(arr)
2、特殊字符(正则表达式中有特殊意义的字符)
字符 | 含义 |
\d | 代表任意一个数字 |
\w | 代表任意一个字母、数字、下划线 |
. | 代表任意一个字符 |
\s | 代表一空格 === ' ' |
[a-z] | 代表任意一个小写字母 |
[A-Z] | 代表任意一个大写字母 |
[a-zA-Z] | 代表任意一个字母 |
[0-9a-zA-Z] | 代表任意一个数字或字母 |
[369] | 代表其中的任意一个 |
\D | 代表任意一个非数字 |
\W | 代表任意一个非数字、字母、下划线 |
\S | 代表非空格 |
3、字符的修饰符
用来修饰字符 - 出现多少次、开头、结尾...
+ | 代表前面的字符,最少是1个 |
? | 修饰前面的字符,最多1个 |
* | 修饰前面的字符,是任意个 |
{n} | 前面的字符必须是n个 |
{n,} | 前面修饰的字符最少要n个 |
{n,m} | 前面修饰的字符最少要n个,最多要m个 |
^ | 必须放在所有字符的最前面,修饰规则是以哪个字符开头 |
$ | 必须放在所有字符的最末尾,修饰规则是以哪个字符结尾 |
4、补充
匹配汉字:[\u4e00-\u9fa5] 代表任意一个汉字
g - 全局模式,贪婪模式 - 寻找字符串中所有符合规则的内容
i - 忽略大小写(可以和g一起使用,也可以单独使用)
gi - 全局模式+忽略大小写
练习:
//手机号检测 // var reg = /^1[3-9]\d{9}$/; // var str = '15345611232' // var bool = reg.test(str) // console.log(bool) //QQ号码检测 // var reg = /^[1-9]{4,9}$/ // var str = '12898' // var n = reg.test(str) // console.log(n) //QQ邮箱检测 // var reg = /^[1-9]{4,9}@qq\.com$/ // var str = '123456@qq.com' // var n = reg.test(str) // console.log(n) //网易邮箱检测 // var reg = /^[a-zA-Z]\w{5,17}@((163|126)\.com|yeah\.net)$/ // var str = 'aaa6461@163.com' // var n = reg.test(str) // console.log(n) //邮箱检测 var reg = /^([1-9]{4,9}@qq\.com)|([a-zA-Z]\w{5,17}@((163|126)\.com|yeah\.net))$/ var str = '4523135@qq.com' console.log(str) var n = reg.test(str) console.log(n)
5、n$ 匹配任何结尾为n的字符串
^n 匹配任何开头为n的字符串
n* 匹配任何包含零个或多个n的字符串