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)
posted @   提莫一米五呀  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示