文章目录
前言
正则表达式是一种用于描述字符串匹配模式的表达式,由普通字符(如字母、数字)和特殊字符(称为"元字符")组成的文本模式,这个模式可以用于
- 检查字符串是否符合特定格式
- 查找字符串中的特定内容
- 替换字符串中的特定内容
- 提取字符串中的特定部分
以下为正则表达式的详细介绍。
一.创建正则表达式
1.字面量创建
语法:
/正则表达式模式/修饰符(可选)
代码实例:
const regex = /abc/i //匹配字符串abc时不区分大小写
特点:
- 使用两个斜杠 / 包裹正则表达式模式
- 修饰符直接跟在第二个斜杠后面
- 特殊字符转义使用单重转义(如 \d)
2.构造函数创建
语法:
const regex = new RegExp(‘pattern’, ‘flags’) //pattern为正则表达式模式,flags为修饰符。
代码实例:
const regex = new RegExp('abc', 'i') //匹配字符串abc时不区分大小写
特点:
- 使用 RegExp 构造函数创建
- 模式作为字符串传入(注意:特殊字符转义使用双重转义(如 \\d))
- 修饰符作为可选的第二个字符串参数
二.正则表达式模式
正则表达式模式分为普通字符和元字符。
1.普通字符
大多数字符仅能够描述本身,这些字符称为普通字符。例如所有的字母和数字。普通字符只能够匹配字符串中与它们相同的字符。
2.元字符(特殊字符)
元字符是一些具有特殊含义的字符,极大的提高了灵活性和强大的匹配功能。元字符又分为边界符,量词,字符类。
1.边界符
正则表达式中的边界符用来提示字符所处位置,主要有两个字符。
注意:如果^和$同时出现则为精确匹配,被匹配的字符串需与两字符包裹的字符串相同。
2.量词
量词用来设定某个模式出现的次数。
注意:量词写在某个表达式的后面,表示前一个表达式可以出现的次数。
3.字符类
1.使用[]匹配字符集合
- 被匹配的字符只要是字符集合里的任意一个字符就行。例如[abc]可以匹配字符a或b或c。
- []里面可以使用连字符 - 表示一个范围。例如[0-9]可以匹配0~9中任意一个数字。
- []里面可以连写。例如[a-zA-Z]可以匹配任意一个大写或小写的英文字母。
- []里面可以写取反符号 ^ 表示匹配除了字符集合以外的任一字符。例如[^a~z]匹配除了小写字母以外的任一字符。
- 使用 . 匹配除换行符外的任何单个字符
- \d 匹配数字,等价于 [0-9]
\D 匹配非数字,等价于 [^0-9]
\w 匹配单词字符(字母、数字、下划线),等价于 [A-Za-z0-9_]
\W 匹配非单词字符
\s 匹配空白字符(空格、制表符、换行符等)
\S 匹配非空白字符
三.修饰符
修饰符用来约束正则执行的某些细节行为,比如是否区分大小写,是否支持多行匹配等。
- g 全局匹配(查找所有匹配而非在第一个匹配后停止)
- i 不区分大小写匹配
- m 多行匹配
- s 允许 . 匹配换行符
- u 使用 Unicode 码点进行匹配
- y 粘性匹配(仅从目标字符串的当前位置开始匹配)
注意:如果需要多个修饰符,直接连写就行。
四. 正则表达式方法
在JavaScript中,正则表达式也是对象。其中常用方法如下:
1.RegExp 对象方法
- test() - 测试字符串是否匹配正则表达式
代码实例:
const regex = /hello/
console.log(regex.test('hello world')) // true
- exec() - 执行正则表达式匹配,返回匹配结果的数组或 null
代码实例:
const regex = /hello/
console.log(regex.exec('hello world')) // ["hello", index: 0, input: "hello world"]
2.String 方法使用正则表达式
- match() - 返回匹配结果的数组
代码实例:
'hello world'.match(/hello/) // ["hello", index: 0, input: "hello world"]
- search() - 返回匹配到的位置索引,未找到返回 -1
代码实例:
'hello world'.search(/world/) // 6
- replace() - 替换匹配的子串
代码实例:
'hello world'.replace(/world/, 'JavaScript') // "hello JavaScript"
- split() - 使用正则表达式分割字符串
代码实例:
'hello world'.split(/\s/); // ["hello", "world"]
浙公网安备 33010602011771号