目录
一、概念
什么是正则表达式? 1个规范字符串的规则
对字符串的作用?
1.验证字符串是否符合规则
2.将字符串中符合规则的部分提取出来
3.将字符串中符合规则的部分替换成新内容
二、定义
var reg = /具体的规则/
var reg = new RegExp(规则字符串)
三、组成部分
字符
普通字符
元字符
- \d 任意一个数字
- \w 任意一个数字 字母 下划线
- \s 一个空格
- . 任意一个字符
- [] 其中的任意一个
修饰符
修饰字符
- {n} 必须是n个
- {n,} 最少n个
- {n,m} 最少n个,最多m个
- + 最少1个
修饰整个表达式
- ^ 规定开头
- $ 规定结尾的
- | 或者
- \ 转义
- [^] 非
- g 贪婪
- i 忽略大小写
- [\u4e00-\u9fa5] 任意一个中文汉字
四、使用
test
- 验证字符串是否符合规则
- 正则.test(字符串)
- 返回布尔值
exec
- 将字符串中符合规则的部分提取出来
- 正则.exec(字符串)
- 返回数组,下标0是我们要的结果
match
- 将字符串中符合规则的部分提取出来
- 正则.match(字符串)
- 返回数组,下标0是我们要的结果
replace
- 将字符串中符合规则的部分替换成新内容
- 字符串.replace(正则, 新的内容)
- 返回替换后的字符串
五、案例
一、手机号
var reg = /^[1][3-9]\d{9}$/
var num='13654544550'
var big=num.match(reg)
console.log(big);
二、扣扣网易邮箱
var reg =/(^[1-9]\d{4,9}@qq\.com$)|(^[a-zA-Z]\w{5,17}@(((163|126)\.com)|(yeah\.net))$)/
var qq= '1848902651@qq.com'
var an='a12351254@163.com'
var wo='a12351254@126.com'
var zi= 'a123131@yeah.net'
var qqs=reg.test(qq)
console.log(qq);
三、扣扣规则
var reg = /^[1-9]\d{4,9}$/
四、提取所有工资
var str = "刘备:1000,关羽:50000,张飞:800。";
var reg = /\d+/g
var arr = str.match(reg)
console.log(arr); // ['1000', '50000', '800']
五、引用替换
var str = '10月1日2023年' // 转成2023年10月1日
var reg = /(\d+月\d+日)(\d+年)/ // 表示上面整个字符串的规则
// 字符串替换
var newStr = str.replace(reg, '$2$1')
console.log(newStr); // 2023年10月1日
var str = '10月27日2022年' // 转成 2022-10-27
var reg = /(\d+)月(\d+)日(\d+)年/
var newStr = str.replace(reg, '$3-$1-$2')
console.log(newStr); // 2022-10-27