regex
正则表达式
定义一些字符串的规则:
计算机可以根据正则表达式,来检查一个字符串是否符合规则
获取字符串中符合规则的内容提取出来
创建正则表达式的对象
/*
var 变量 = new RegExp('正则表达式','匹配模式')
使用 typeof 检查正则对象,会返回 object
在构造函数中可以传递一个匹配模式作为第二个参数
可以是
i 忽略大小写
g 全局匹配模式
*/
var reg = new RegExp("a", "i"); //检测一个字符串中是否含有 a(A)
var str = "a";
/*
使用字面量来创建正则表达式
语法: var 变量 = /正则表达式/匹配模式
*/
var reg1 = /a/i;
console.log(reg1.test("abc"));
RegExp 对象方法
/*
test()
-使用这个方法可以检查一个字符串是否符合正则表达式的规则
如果符合则返回 true,否则返回 false
*/
var res = reg.test(str);
/*
exec()
-在一个指定字符串中执行一个搜索匹配。返回一个结果数组或 null。不能全局匹配
*/
匹配规则
//创建一个正则表达式,检查一个字符串中是否有 a 或者 b
/*
使用|表示或者的意思
*/
var reg2 = /a|b/;
console.log(reg2.test("abbbbbbb"));
//创建一个正则表达式检查一个字符串中是否有字符
/*
[]中的内容也是或的关系
[a-z] 任意小写
[A-Z] 任意大写
[A-z] 任意字母
*/
var reg3 = /[a-z]/;
console.log(reg3.test("a"));
/*
[^ ] 除了(查找任何不在方括号之间的字符)
*/
/*
创建一个正则表达式检查一个字符串中重复出现的内容
量词 {n}
-通过量词可以设置一个内容中出现的次数
-量词只对它前边的一个内容起作用
- {n,m} 出现 n-m 次
- {n,} 出现 n 次及以上
- + 出现1次及以上
- * 出现0次及以上
- ? 出现0次或1次
*/
var reg4 = /a{3}/;
var reg5 = /(ab){3}/;
var reg6 = /ab{1,3}c/;
var reg7 = /ab+c/;
/*
检查一个字符串中是否以 a 开头
^ 表示开头
$ 表示结尾
*/
var reg8 = /^a/;
var reg9 = /a$/;
console.log(reg8.test("absbbbb"));
/*
检查一个字符串中是否有点
.表示任意字符
在正则表达式中使用\作为转义字符
\. 表示.
\\ 表示\
\w 任意字母、数字、_
\W 除了字母数字_
\d 任意数字
\D 除了数字
\s 空格
\S 除了空格
\b 单词边界
\B 除了单词边界
注意:使用构造函数时,由于他的参数是一个字符串,而\是一个字符串中转义字符
如果要使用\则需要使用\\来代替
*/
var reg = /\./;
reg = /\\/;
reg = new RegExp('\\.');
reg = new RegExp('\\\\');
支持 regExp 的字符串对象的方法
/*
split()
- 可以将一个字符串拆分为一个数组
- 方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串
- 这个方法即使不指定全局匹配,也会全部拆分
*/
var str = "1a2b3c4d5e6f7g";
var result = str.split(/[A-z]/);
console.log(result);
/*
search()
- 可以搜索字符串中是否含有指定内容 类似 indexOf()
- 如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到返回-1
- 他可以接受一个正则表达式作为参数,然后根据正则表达式去检索字符串
- 这个方法只会查找一个,即使设置全局匹配也没用
*/
str = "hello abc hello aec afc";
res = str.search(/a[bef]c/);
console.log(res);
/*
match()
- 可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
- 会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果
- 默认只会匹配第一个 可以用 g 全局
*/
str = "1a2b3c4d5e6f7g8A9B";
result = str.match(/[A-z]/ig);
console.log(result); //数组
/*
replace()
- 可以将字符串中指定的内容替换为新的内容
- 参数:
1.被替换的内容,可以接受一个正则表达式作为参数
2.新的内容
- 默认只会替换第一个 可以用 g 全局替换
*/
//result = str.replace(/[a-z]/ig, "@_@");
result = str.replace(/[a-z]/ig, "");
console.log(result)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具