转载说明:经授权转载,原文地址:https://blog.csdn.net/qq_29801073/article/details/135597325
想学正则,这篇文章绝对让你爱上正则(保姆级)
目录
- 一. 正则表达式介绍
- 二. 初识正则表达式
- 三. 正则表达式元字符详解
- 四. 正则表达式中的修饰符
- 五. JS中使用正则表达式
- 六. 总结
一. 正则表达式介绍
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。它在代码中常简写为 regex、regexp 或 RE,主要用于字符串模式分割、匹配查找及替换操作。
正则表达式在很多编程语言都可以使用,例如 JavaScript、Java、Python、PHP 等,通常用于:
- 对字符串进行模式匹配和搜索。
- 验证输入格式,例如邮箱、手机号、身份证号等。
- 替换文本中的特定内容。
如果想深入学习 JavaScript,建议结合以下基础内容一起掌握:
二. 初识正则表达式
下面是一个最基础的正则:
/abc/
这表示:
- 在目标字符串中查找连续出现的 abc。
- 例如:
- abc ✅ 匹配
- xabcx ✅ 包含匹配
- ab ❌ 不匹配
三. 正则表达式元字符详解
正则表达式最核心的内容就是元字符。下面按类别整理。
1. 边界元字符
- ^:匹配字符串开始
- $:匹配字符串结束
示例:
/^abc/ 匹配以 abc 开头的字符串
/abc$/ 匹配以 abc 结尾的字符串
2. 量词元字符
用于控制前面字符出现的次数。
- *:出现 0 次或多次
- +:出现 1 次或多次
- ?:出现 0 次或 1 次
- {n}:恰好出现 n 次
- {n,}:至少出现 n 次
- {n,m}:出现 n 到 m 次
示例:
- /a*/:a 出现任意次
- /a+/:至少一个 a
- /a?/:0 个或 1 个 a
- /a{3}/:3 个 a
- /a{2,5}/:2 到 5 个 a
3. 特殊元字符
- .:匹配除换行符外的任意单个字符
- \:转义字符
- |:或(选择匹配)
- ():分组
- []:字符集合
- [^]:排除型字符集合
示例:
- /a.c/:匹配 abc、a1c
- /a\+b/:匹配字符串 a+b
- /ab|cd/:匹配 ab 或 cd
- /(abc)+/:一个或多个 abc
4. 预定义字符类
- \d:数字,等价于 [0-9]
- \D:非数字
- \w:字母、数字、下划线,等价于 [A-Za-z0-9_]
- \W:非字母数字下划线
- \s:空白字符
- \S:非空白字符
5. 其他常用元字符说明
- \b:单词边界
- \B:非单词边界
- (?=):正向预查
- (?! ):负向预查
四. 正则表达式中的修饰符
修饰符用于改变匹配行为,常见有:
- g:全局匹配
- i:忽略大小写
- m:多行匹配
示例:
- /abc/g
- /abc/i
- /^abc/m
五. JS中使用正则表达式
在 JavaScript 中有两种方式创建正则表达式:
1. 字面量方式
let reg = /abc/g
2. 构造函数方式
let reg = new RegExp("abc", "g")
常见方法:
1. test()
用于检测字符串是否匹配,返回布尔值。
let reg = /abc/;
console.log(reg.test("abc123")); // true
2. exec()
用于获取匹配结果,返回数组或 null。
let reg = /abc/;
console.log(reg.exec("123abc456")); // ["abc"]
3. match()
字符串方法,返回匹配结果。
let str = "abc123abc";
console.log(str.match(/abc/g)); // ["abc", "abc"]
4. replace()
字符串替换。
let str = "I love js";
console.log(str.replace(/js/, "regex")); // I love regex
六. 总结
正则表达式并不难,难的是记忆各种元字符的含义和组合规则。
建议学习路线:
- 先记住常见元字符。
- 多写几个简单匹配例子。
- 再学习分组、捕获、贪婪匹配、预查等高级用法。
- 结合 JavaScript 字符串方法练习。
当你真正动手写几个案例之后,就会发现正则表达式并没有想象中那么可怕。