TypeScript中正则表达式的用法及实际应用_javascript技巧

正则模式是固定的、已知的

不需要动态构建正则

需要更好的可读性

使用构造函数语法

在程序运行时(而非编写代码时)根据需要创建或修改正则表达式模式。

作用:使匹配不区分大小写

作用:查找所有匹配项,而不是在第一个匹配后停止

作用:使 ^$ 匹配每行的开头和结尾,而不是整个字符串的开头和结尾

const multiLineText = `First lineSecond lineThird line`;// 不使用 m 修饰符console.log(/^Second/.test(multiLineText)); // false//在整个字符串的开头位置尝试匹配 "Second"// 使用 m 修饰符console.log(/^Second/m.test(multiLineText)); // true

作用:正确处理大于 \uFFFF 的 Unicode 字符

const emojiText = '😊 笑脸';// 不使用 u 修饰符console.log(/^.$/.test(emojiText)); // false (无法正确匹配emoji)// 使用 u 修饰符console.log(/^.$/u.test(emojiText)); // true (正确匹配单个emoji字符)// 匹配特定Unicode字符console.log(/\p{Emoji}/u.test('😊')); // trueconsole.log(/\p{Script=Han}/u.test('汉')); // true (匹配汉字)

作用:使 . 匹配包括换行符在内的任意字符

const textWithNewline = 'Hello\nWorld';// 不使用 s 修饰符console.log(/Hello.World/.test(textWithNewline)); // false (.不匹配换行符)// 使用 s 修饰符console.log(/Hello.World/s.test(textWithNewline)); // true// 替代方案(不使用s修饰符)console.log(/Hello[\s\S]World/.test(textWithNewline)); // true

可以同时使用多个修饰符,顺序无关紧要:

// 不区分大小写 + 全局匹配 + 多行模式const regex = /^hello/gim;const text = `Hello worldhello everyoneHELLO there`;console.log(text.match(regex)); // ["Hello", "hello", "HELLO"]

const regex = /hello/;// test() - 测试是否匹配regex.test('hello world'); // true// exec() - 执行搜索,返回匹配结果或 nullconst result = regex.exec('hello world');console.log(result?.[0]); // "hello"

const str = 'Hello world, hello TypeScript';// match() - 返回匹配结果str.match(/hello/gi); // ["Hello", "hello"]// search() - 返回匹配位置的索引str.search(/world/); // 6// replace() - 替换匹配的子串str.replace(/hello/gi, 'Hi'); // "Hi world, Hi TypeScript"// split() - 使用正则分割字符串'one,two,three'.split(/,/); // ["one", "two", "three"]

确保匹配从字符串开头开始,防止前面有其他字符

邮箱地址必须包含一个@符号

正则表达式中的点号.

确保匹配直到字符串结束,防止后面有其他字符

核心的正则表达式是 /[?&]([^=#]+)=([^&#]*)/g,让我们分解它的每个部分:

function checkPasswordStrength(password: string): 'weak' | 'medium' | 'strong' { // 至少8个字符 if (password.length < 8) return 'weak'; // 弱: 只有字母或数字 if (/^[a-zA-Z]+$/.test(password) || /^\d+$/.test(password)) { return 'weak'; } // 中: 包含字母和数字 if (/^(?=.*[a-zA-Z])(?=.*\d).+$/.test(password)) { // 强: 包含字母、数字和特殊字符 if (/^(?=.*[a-zA-Z])(?=.*\d)(?=.*[^a-zA-Z\d]).+$/.test(password)) { return 'strong'; } return 'medium'; } return 'weak';}

(?=pattern) 是正向先行断言的基本形式,表示:

这个表达式由两个正向先行断言组成,分别检查密码中是否包含字母和数字。

到此这篇关于TypeScript中正则表达式的用法及实际应用的文章就介绍到这了,更多相关TS中正则表达式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!


本文地址: https://www.earthnavs.com/jishuwz/10b26c5c5c89009fb677.html
全局中部横幅
文章信息

AT导航(www.atdh.cn)为您提供免费网站收录,以及网址大全库的建立,旨在为用户提供高效便捷的网址收录和查询服务,同时提供最全的优秀名站导航。

西瓜数据

西瓜数据提供新媒体流量监测及精准营销服务,以数据为依托,为品牌主营销洞察提供支持,提高投放效率,降低投放成本,助力品牌实现营销新目标。

【汽车论坛】汽车社区

汽车之家论坛,全球最大汽车论坛,助力全球车友交流提车经历,用车感受,车友会活动,维修保养经验,自驾游等,更有媳妇当车模,美人生活秀,论坛红人馆等专题,精彩汽车内容尽在汽车之家

长江网

长江网(www.cjn.cn)成立于2002年8月,是国家重点地方新闻网,是武汉市唯一拥有国家Ⅰ类资质的新闻网,是武汉市唯一上榜《互联网新闻信息稿源单位名单》(白名单)的网站,拥有《互联网新闻信息服务许可证》、《网络文化经营许可证》、《互联网出版许可证》、《信息网络传播视听节目许可证》、《广播电影电视节目制作经营许可证》、《增值电信业务经营许可证》、《短消息类服务接入代码使用证书(电信网码号资源)》等权威资质。作为互联网舆论主阵地,目前,长江网全媒体矩阵包括:长江网(小程序、APP、PC端、WAP端)、长江时评;长江网人民号、新华号,长江网微信、微博、抖音号、头条号、视频号、B站等。同时,承担“学习强国”武汉学习平台、“武汉发布”平台、武汉市级新闻发布会、武汉城市留言板、武汉企业直通车、武汉市网络人士实践创新基地、“武汉人大”微信公众号、“武汉组工”微信公众号等党政平台运维工作。长江日报报业集团依托长江网成立武汉都市圈新闻中心,助力武汉发挥“一主引领”作用,为推进都市圈同城化发展提供强大舆论支持。

一对一网络服务器以成本价回馈合规用户

一对一平台专注提供超低价服务器,为用户节约使用成本;一对一主机系统是超越同行的服务器管理系统,可以实现对服务器、云主机、虚拟空间自动管理与销售!

云服务器

八艾云专注为国内站长提供香港空间,香港虚拟主机,云主机,云服务器,服务器租用,香港VPS,欢迎您的选购!

全考通

全考通提供考试资源下载,一级建造师、二级建造师、造价师、消防工程师、建筑师、资格考试、安全工程师、咨询工程师、公务员、考研、经济师、英语四六级等热门考试课件免费下载及分享平台。

冒泡网

冒泡网创为您免费分享网络创业项目、网创经验、各大网创论坛VIP教程、创业交流、网创经验交流等,帮助大家获取最新创业项目信息!

79收录网

79收录网系统是一个专业收录优质网站的网址导航平台,提供简洁高效的网络入口。免费提交收录,发现实用工具、设计资源、程序员必备站,打造您的专属上网主页

防黄剂,丁酰肼原药,异戊烯醇321,对苯二酚,异戊醇,异戊烯醛,

济南欣烨化工有限公司是一家集科研,销售防黄剂,丁酰肼原药,防黄剂HN-130,防黄剂HN-150,防黄剂,丁酰肼原药,异戊烯醇321,对苯二酚,异戊醇,异戊烯醛,异丙叉丙酮,异丙醚,异己二醇,二甲硫基甲苯二胺,二乙基甲苯二胺,