正则表达式
发布于2019-11-29 19:52:15,更新于2023-12-27 23:30:27,标签:js regex 文章会持续修订,转载请注明来源地址:https://meethigher.top/blog概念
什么是正则表达式?
正则表达式:用于匹配规律规则的表达式。
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE)
作用
- 匹配:给定的字符串是否符合正则表达式的过渡逻辑
- 提取:从字符串中获取我们想要的特定部分
- 替换:强大的字符串替换能力
特点
- 灵活性、逻辑性和功能性强
- 迅速地用极简单的方式达到字符串的复杂控制
测试
组成
由普通字符和元字符两部分组成
普通字符
普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。
元字符
常用元字符串
元字符 | 说明 |
---|---|
\d | 匹配数字 [0-9] |
\D | 匹配任意非数字的字符 [^0-9] |
\w | 匹配字母或数字或者下划线 [a-zA-Z_0-9] |
\W | 匹配任意不是字母、数字、下划线 [^a-zA-Z_0-9] |
\s | 匹配任意的空白符 [ \t\n\x0B\f\r] |
\S | 匹配任意不是空白符的字符 [^\s] |
. | 匹配除换行符以外的任意单个字符 |
^ | 表示匹配行首的文本(以…开始) |
$ | 表示匹配行尾的文本(以…结束) |
限定符
限定符 | 说明 |
---|---|
* | 重复0次或者多次 |
+ | 重复1次或者多次 |
? | 重复0次或者1次 |
{n} | 重复n次 |
{n,} | 重复n次或者多次 |
{n,m} | 重复n到m次 |
其他
其他 | 含义 |
---|---|
[] | 字符串用中括号括起来,表示匹配其中的任一字符,相当于或的意思 |
[^] | 匹配除中括号以内的内容 |
\ | 转义符 |
| | 或者,选择两个中的一个,注意|将左右两边分为两部分,而不管左右两边有多长多乱 |
() | 从两个直接量中选择一个,分组 eg:gr(a|e)y匹配gray和grey |
[\u4e00-\u9fa5] 匹配汉字
案例
验证手机号:
1 | ^\d{11}$ |
验证邮编:
1 | ^\d{6}$ |
验证日期 2019-11-29
1 | ^\d{4}-\d{1,2}-\d{1-2}$ |
1 | ^\w+@\w+\.\w+$ |
验证ip地址 192.168.1.10
1 | ^\d{1,3}\(.\d{1,3}){3}$ |
JavaScript 中使用正则表达式
创建正则对象
方式1:
1 | var reg = new Regex('\d', 'i'); |
方式2:
1 | var reg = /\d/i; |
参数
标志 | 说明 |
---|---|
i | 忽略大小写 |
g | 全局匹配 |
gi | 全局匹配+忽略大小写 |
正则匹配
1 | // 匹配日期 |
匹配正则表达式
console.log(/./.test("除了回车换行以为的任意字符"));//true
console.log(/.*/.test("0个到多个"));//true
console.log(/.+/.test("1个到多个"));//true
console.log(/.?/.test("哈哈"));//true
console.log(/[0-9]/.test("9527"));//true
console.log(/[a-z]/.test("what"));//true
console.log(/[A-Z]/.test("Are"));//true
console.log(/[a-zA-Z]/.test("干啥子"));//false
console.log(/[0-9a-zA-Z]/.test("9ebg"));//true
console.log(/b|(ara)/.test("abra"));//true
console.log(/[a-z]{2,3}/.test("arfsf"));//true
console.log(/\d/.test("998"));//true
console.log(/\d*/.test("998"));//true
console.log(/\d+/.test("998"));//true
console.log(/\d{0,}/.test("998"));//true
console.log(/\d{2,3}/.test("998"));//true
console.log(/\D/.test("eat"));//true
console.log(/\s/.test(" "));//true
console.log(/\S/.test("嘎嘎"));//true
console.log(/\w/.test("_"));//true
console.log(/\W/.test("_"));//true
正则表达式案例
1.验证密码强弱
2.验证邮箱:[0-9a-zA-Z_.-]+[@][0-9a-zA-Z._-]+([.][a-zA-Z]+){1,2}
3.验证中文名字[\u4e00-\u9fa5]
自己完成
正则提取
1 | // 1. 提取工资 |
正则替换
1 | // 1. 替换所有空白 |
案例:表单验证
1 | QQ号:<input type="text" id="txtQQ"><span></span><br> |
1 | //获取文本框 |
表单验证部分,封装成函数:
1 | var regBirthday = /^\d{4}-\d{1,2}-\d{1,2}$/; |
通过给元素增加自定义验证属性对表单进行验证:
1 | <form id="frm"> |
1 | // 所有的验证规则 |
打赏