什么是正则表达式
正则表达式是存在于字符串中的模式。
例如,表示邮政编码的模式是“数字 0 到 9 之一,重复 7 次”。
这种模式(正则表达式)可以通过组合“特殊字符”来描述,这将在后面描述。
正则表达式主要用于搜索和替换字符串。
定义方法
在 JavaScript 中定义正则表达式有两种方法。
正则表达式字面量
// /パターン/オプションフラグ(後述)
const re = /abc/i;
加载脚本时会编译正则表达式文字。
因此,如果正则表达式模式没有改变,这种定义方法具有更好的性能。
正则表达式构造函数
// new RegExp('パターン', 'オプションフラグ(後述)')
const re = new RegExp('abc', 'i');
这是在函数执行时编译的。
因此,当模式发生变化时使用这种定义方法,例如当您想在正则表达式模式中使用用户的输入值时。
特殊字符
正则表达式是通过组合特殊字符来编写的。
| 信 | 解释 |
|---|---|
| ^ | 匹配一行的开头 |
| $ | 匹配行尾 |
| * | 匹配前面的字符 0 次或更多次 |
| + | 匹配前面的字符一次或多次 |
| ? | 匹配前面的字符 0 次或 1 次 |
| {n} | 匹配前面的字符 n 次 |
| {n,} | 匹配前面的字符 n 次或更多次 |
| {n,m} | 匹配前一个字符的 n 到 m 次重复 |
| . | 匹配除换行符以外的任何字符 |
| 转义字符 | |
| [ABC] | 匹配任何一个括在方括号中的字符 |
| [a-z] | 匹配一系列字符 |
| [^abc] | 匹配除方括号中的字符外的任何字符 |
| s | 匹配空格 |
| w | 匹配任何字母、数字或下划线 |
| W。 | 匹配 w 不匹配的字符 |
| d | 匹配一个数字 |
| D. | 匹配非数字 |
| 匹配换行符 | |
| 匹配返回 |
例如,一个邮政编码正则表达式可以表示如下:
// 先頭から末尾の間に、0から9の数字のいずれかを、7回繰り返す
const postCode = /^[0-9]{7}$/
选项标志
正则表达式具有可选标志。
您可以按任何顺序使用其中的一个或多个。
选项标志允许全局搜索、不区分大小写的搜索等。
| 选项标志 | 解释 |
|---|---|
| d | 生成匹配子串的位置 |
| G | 进行全局搜索 |
| 胃 | 进行不区分大小写的搜索 |
| 米 | 进行多行搜索 |
| s | 使 . 匹配换行符 |
| 鸬鹚 | 支持 Unicode |
| 是的 | 对从当前位置开始的主题字符串部分进行“固定开始”搜索 |
使用正则表达式的方法
正则表达式可以在 JavaScript 中使用,在 RegExp 对象上使用 test() 和 exec(),在 String 对象上使用 match()、replace()、search() 和 split()。
测试()
判断是否有字符串匹配正则表达式并返回真/假。
const str = "ABCDEFG";
const re = /[a-c]/i;
const resultTest = re.test(str);
console.log(resultTest); // true
执行()
搜索与正则表达式匹配的字符串,并以数组形式返回结果。
const str = "ABCDEFG";
const re = /[a-c]/i;
const resultExec = re.exec(str);
console.log(resultExec); // ['A', index: 0, input: 'ABCDEFG', groups: undefined]
匹配()
搜索与正则表达式匹配的字符串,并以数组形式返回结果。
与RegExp对象的exec()基本相同,但加上g选项后结果不同。
使用 g 选项,返回匹配字符串的数组。
const str = "ABCDEFG";
const re = /[a-c]/ig;
const resultMatch = str.match(re);
console.log(resultMatch); // ['A', 'B', 'C']
代替()
匹配正则表达式的字符串可以替换为另一个字符串。
const str = "ABCDEFG";
const re = /a/i;
const resultReplace = str.replace(re, 'Z');
console.log(resultReplace); // ZBCDEFG
搜索()
搜索匹配正则表达式的字符串并返回匹配位置。
const str = "BCDEFGA";
const re = /a/i;
const resultSearch = str.search(re);
console.log(resultSearch); // 6
分裂()
可以使用匹配正则表达式的字符串作为分隔符来拆分字符串。
const str = "2022/10/25";
const re = ///;
const resultSplit = str.split(re);
console.log(resultSplit); // ['2022', '10', '25']
参考
招聘启事
Relic, Inc. 正在积极招聘前端工程师。
此外,Relic 有区域基地,所以也欢迎 U/I 转弯! ?
如果您甚至有点兴趣,请从 Relic 招聘网站申请!
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308631320.html