正则表达式
正则表达式
RegExp - 正则表达式(Regular Expression)复杂数据类型 object
作用:专门用来验证字符串是否符合规则;
从字符串里面获取一部分符合规则的内容
语法:使用一些特定的符号,来组成一个表达式
使用这个表达式去验证字符串,或者获取一些内容
创建
1.字面量形式创建
var reg = /abcd/i // 写在两个//中间 验证字符串内要包含'abcd'字母d段 不区分大小写
2.内置构造函数创建
var res = new RegExp('abcd','i') //验证字符串内要包含'abcd'字母d段 不区分大小写
方法
1.匹配
验证字符串是否符合规则
语法:正则.test(要检测的字符串)
返回:一个布尔值,true / false
2.捕获
获取字符串中符合正则规则的一部分片段
语法:正则.exec(要捕获的字符串)
返回:1.没有找到,返回null
2.返回数组
3.字符串的正则表达式方法
match() 匹配
replace() 查找并替换,返回替换后的新字符串
search() 查找并返回,返回匹配的字符串的其实位置,找不到则返回-1
split() 根据指定字符串拆分,返回拆分后的数组,否则返回原字符串
元字符--基础
- \s 表示一个空白字符串 空格,回车,制表
- \S 表示一个非空白字符串
- \t 表示一个制表符(tab) ,不是空格,一定要是tab
- \d 表示一个数字
- \D 表示一个非数字
- \w 表示包含一个数字或者字母或者下划线
- \W 表示包含一个(数字,字母,下划线)以外的字符 非数字字母下划线
- 点(
.
) 非换行符以外的任意单个字符, 看字符,一个中文字也匹配 - 斜线(\)表示转义符 把没有意义的内容转换成有意义的内容;把有意义的内容换成没有意义的内容
元字符--边界
1.^ 表示字符串开始
var reg = /^\d/; //表示字符串要以数字开头
2.$ 表示字符串结尾
var reg = /\d$/; //表示要以数字结尾
var reg = /^\d$/; //这表示开头接一个数字立刻结束,所以只能有一个数字
//一个符号只表示一个字符
元字符--限定
写在普通元字符或者字母符号的后面
修饰前面一个符号出现的次数
1.*
表示字符串中某字符需要出现 0 ~ 多个
var reg = /\d*/;//表示字符串里要出现0-多个数字
console.log(reg.test("abcd1abcd111"));//true
var reg2 = /^\d*$/;//表示以数字开头,有多个数字,立刻以数字结尾
console.log(reg2.test("123456"));//true
console.log(reg2.test("123adc123"));//false
2.+
表示字符串中某字符需出现 1 ~ 多次
var reg = /\d+/;
console.log(reg.test("abcds")); //false
console.log(reg.test("abc1"));//true
3.?
表示字符串中某字符出现 0 ~ 1次
var reg = /^\d?$/;
console.log(reg.test("12"));//false
4.{n} 表示出现n次
var reg = /^\d{3}$/;//表示只能由3个数字组成
5.{n,} 表示出现n到多次
var reg = /^\d{2,}$/;//表示只能由两到多个数字组成
6.{n,m} 表示只能出现n ~m次
var reg = /^\d{2,4}$/;//表示只能由2-4个数字组成
7.[]表示里面的任意一个元素
var reg = /[abc]/; //表示匹配a,b,c任意一个即可
模式匹配
| 代表或,匹配其中一种字符串
var reg = /good|baidu|bing/; //表示字符串只要存在三个字符串其中一个即可
() 分组匹配 将内容进行分组,可以作为一个整体进行多次匹配
var reg = /(good){2,4}/; //匹配分组中的字符串"good"出现2-4次
(.*)获取n...m之间的任意字符
var reg = /n(.*)m/;
g 全局匹配
i 忽略大小写
m 换行模式 换行后重新匹配 分组
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗