正则表达式

正则表达式

参考文章 @CUGGZ
参考文章 @轩陌

声明一个正则表达式

字面量声明

javascript 复制代码
const rex = /pattern/;

构造函数声明

javascript 复制代码
const rex = new RegExp(pattern);

匹配模式

字符集合

\[\] 可以匹配中括号中包含的任意字符

比如 想要匹配 bt ct

javascript 复制代码
let rex = /[bc]t/g;

let string = "actionbatbtctat";

console.log(string.match(rex)); // [ 'ct', 'bt', 'ct' ]

拓展

javascript 复制代码
[a-z] 从小写a-z
[A-Z] 大写A-Z
[0-9] 0-9
[^a] 除了a以外的

符号范围:[#$%&@];
混合范围:[a-zA-Z0-9],匹配所有数字、大小写字母中的任意字符。

量词

{} 规定一个规则匹配多少次

javascript 复制代码
let rex = /[a-z]{2}/g;

let string = "actionbbatbcctctat";

console.log(string.match(rex)); // [ 'ac', 'ti', 'on', 'bb', 'at', 'bc', 'ct', 'ct', 'at' ]

拓展

javascript 复制代码
{3} 出现次数为最多3次
{1,4} 1 <= 出现次数 <= 4
{1,} 最少出现1次,简写 +
{0,} 至少0次,简写*
{0,1} 最少0次,最多1次,简写?

元字符

\d:相当于0-9,匹配任意数字;

\D:相当于\^0-9

\w:相当于0-9a-zA-Z,匹配任意数字、大小写字母和下划线;

\W:相当于:\^0-9a-zA-Z

\s:相当于\\t\\v\\n\\r\\f,匹配任意空白符,包括空格,水平制表符\t,垂直制表符\v,换行符\n,回车符\r,换页符\f;

\S:相当于\^\\t\\v\\n\\r\\f,表示非空白符。

特殊字符

.:匹配除了换行符之外的任何单个字符;

\:将下一个字符标记为特殊字符、或原义字符、或向后引用、或八进制转义符;

|:逻辑或操作符;

\^:取非,匹配未包含的任意字符。

位置匹配

\b:匹配一个单词边界,也就是指单词和空格间的位置;

\B:匹配非单词边界;

^:匹配开头,在多行匹配中匹配行开头;

$:匹配结尾,在多行匹配中匹配行结尾;

(?=p):匹配 p 前面的位置;

(?!=p):匹配不是 p 前面的位置。

修饰符

g:表示全局模式,即运用于所有字符串;

i:表示不区分大小写,即匹配时忽略字符串的大小写;

m:表示多行模式,强制 $ 和 ^ 分别匹配每个换行符。

实例方法

test() 和 exec()

test() : 检测一个字符串中是否包含 正则表单式的内容. 包含 返回true, 不包含 返回 false.

javascript 复制代码
const regex1 = /a/gi;
const regex2 = /hello/gi;
const str = "Action speak louder than words";

console.log(regex1.test(str)); // true
console.log(regex2.test(str)); // false

exec() : 将字符串中符合正则表达式的内容 返回一个数组,如果没有匹配到内容则返回null.

javascript 复制代码
const regex1 = /a/gi;
const regex2 = /hello/gi;
const str = "Action speak louder than words";

console.log(regex1.exec(str)); // ['A', index: 0, input: 'Action speak louder than words', groups: undefined]
console.log(regex2.exec(str)); // null

字符串方法

search()

用于查找 与正则表达式匹配的内容,并返回其索引.

注意: 1. 只能匹配到第一个 2. 匹配不到的会返回-1

javascript 复制代码
const regex1 = /a/gi;
const regex2 = /p/gi;
const regex3 = /m/gi;
const str = "Action speak louder than words";

console.log(str.search(regex1)); // 输出结果:0
console.log(str.search(regex2)); // 输出结果:8
console.log(str.search(regex3)); // 输出结果:-1

match()

将匹配到的内容 以数组的形式返回.

注意:1. 如果添加了 g 修饰符,可以将所有匹配到的内容放在一个数组中返回 ,没添加的话只会返回第一个匹配到的内容 2. 匹配不到的话 会返回一个 null

javascript 复制代码
const regex1 = /a/gi;
const regex2 = /a/i;
const regex3 = /m/gi;
const str = "Action speak louder than words";

console.log(str.match(regex1)); // 输出结果:['A', 'a', 'a']
console.log(str.match(regex2)); // 输出结果:['A', index: 0, input: 'Action speak louder than words', groups: undefined]
console.log(str.match(regex3)); // 输出结果:null

replace()

用于将匹配到的内容 替换为其他内容

javascript 复制代码
const regex = /a/g;
const str = "Action speak louder than words";

console.log(str.replace(regex, "A")); // 输出结果:Action speAk louder thAn words
相关推荐
吴声子夜歌2 天前
正则指引——Ruby
开发语言·正则表达式·ruby
吴声子夜歌2 天前
正则指引——Golang
开发语言·golang·正则表达式
吴声子夜歌3 天前
正则指引——PHP
开发语言·正则表达式·php
吴声子夜歌5 天前
正则指引——断言
正则表达式
吴声子夜歌5 天前
正则指引——匹配原理
java·正则表达式
吴声子夜歌6 天前
正则表达式——环视
开发语言·正则表达式
吴声子夜歌7 天前
正则表达式——边界
正则表达式
营养充电站7 天前
C++23 新特性在 CLion 中的实战体验
macos·docker·jupyter·正则表达式
吴声子夜歌8 天前
正则表达式——字符组
正则表达式