什么是正则表达式

正则表达式是存在于字符串中的模式。
例如,表示邮政编码的模式是“数字 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

相关文章:

  • 2021-08-09
  • 2021-07-08
猜你喜欢
  • 2021-12-25
  • 2021-04-18
  • 2021-12-13
  • 2021-08-29
  • 2021-06-07
相关资源
相似解决方案