正则表达式备忘(基于JavaScript)
基于JS学习的正则表达式 备忘
e.g.
匹配以0开头的三位或四位区号,以-分格的7或8位电话号码
var reg1 = /^0\d{2,3}\-\d{7,8}$/;
或
var reg1 = new RegExp('^0\\d{2,3}\\-\\d{7,8}$') ;
reg1.test('010-1234567');
reg1.test('010-12345678');
reg1.test('0531-1234567');
reg1.test('0531-12345678');
第一种写法更简洁!
#使用正则表达式分格字符
var str1 = 'a,b c, d';
var result = str1.split(/[\s\,]+/);
console.log(result);
#使用正则表达式提取子串
var reg = /^(\d{3})\-(\d{3,8})$/;
var arr = reg.exec('010-123456');
reg.exec的返回值:匹配成功时,[0]为匹配到的整个字符串,后面的元素是每个子串;
匹配失败时返回null;
#正则表达式的贪婪匹配
var reg = /^(\d+)(0*)$/;
reg用来匹配至少一个数字开头并且以任意个0结尾的字符串;
当用reg.exec('123000')时,由于贪婪匹配,所以\d+把后面的000也匹配上了,结果0*只能匹配空字符串;
返回['123000', '123000', '']
#正则表达式的 非贪婪匹配
在 \d+ 后加一个?,即为 \d+?, 如下
var reg = /^(\d+?)(0*)$/;
reg.exec('123000'); 返回['123000, '123', '000']
#正则表达式全局搜索
形式:
var reg = /[a-zA-Z]+Script/g; //指定字母g标志
var str1 = 'JavsScript, VBScript, and ECMAScript';
reg.exec(str1);
reg.lastIndex;
reg.exec(str1);
reg.lastIndex;
reg.exec(str1);
reg.lastIndex;
字母i标志意思是忽略大小写
var reg = /[a-zA-Z]+Script/gi; //指定字母g标志,i忽略大小写
var str1 = 'JavsScript, VBscript, and ECMAscript';
可匹配Script和script
#匹配email
var re = /^\w+\.?\w+\@\w+\.[a-zA-Z]{2,}$/;
匹配
var email = 'abc@163.com';
var email = 'abc.def@test.org';
var email = 'abc@qq.tt';
re.test(email); => true
#匹配带名字的email
var re = /^\<(\w+\s*\w+)\>\s*(\w+\.?\w+\@\w+\.[a-zA-Z]{2,})$/;
匹配
var email = '<abc def> cbd.def@163.com'; // [<abc def> cbd.def@163.com, abc def, cbd.def@163.com]
var email = '<abcdef> cbddef@test.tt'; // [<abc def> cbd.def@163.com, abcdef, cbddef@test.tt]
【推荐】国内首个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,是通过提示词来发起调用的吗