正则表达式

正则表达式

参考文章 @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
相关推荐
Frag0ut3 天前
Notepad++ 正则表达式完全手册:文本处理的终极武器(2026实战版)
正则表达式·notepad++·数据清洗·日志分析·正则替换·提取ip·正则表达式实战
Patrick在香港6 天前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
echome8886 天前
Python 正则表达式:5 个日常够用的模式
python·正则表达式
yivifu8 天前
能够使用Python正则表达式函数的文本处理工具——Calibre电子书编辑器
正则表达式
全栈陈序员8 天前
【Python】基础语法入门(二十九)—— 正则表达式实战:文本处理利器
开发语言·人工智能·python·正则表达式
BruceXu14 天前
\b 在中文里会静默失效:三个正则坑和一份能用的字符边界方案
正则表达式
阿昭L15 天前
正则表达式
正则表达式·编译原理
波力海苔夹心脆67516 天前
C# 正则表达式零基础入门:从“看得懂“到“会用“
经验分享·后端·mysql·正则表达式·c#
FRing0317 天前
JavaScript入门到精通二十四(正则表达式、元字符、修饰符)
开发语言·前端·javascript·正则表达式
小白快快跑哦19 天前
python-字符串全解(六):正则表达式-元字符与转义
python·正则表达式·字符串·元字符·转义