走近正则-温故知新

再一次开始正则表达式的学习,可能更应该说是复习。
这一次的学习从MDN文档开始,首先记住元字符,它们表示特定的含义

对于匹配到单词的元字符

\d:匹配数字,\D则匹配非数字;
\w:匹配单字符,\W匹配一个非单字符,单字符——[A-Za-z0-9_];
\s: 匹配一个空白字符,\S匹配一个非空白字符;
.:匹配除换行符之外的任何单个字符,那么搭配上换行符\n,也就代表了所有字符

关于匹配的起始元字符:

^:匹配开头,$:匹配结束

对于数量的匹配元字符:

顾名思义,就是指这个字符你想匹配它出现几次的场景
*:意思是这个表达式出现0次或多次
+:匹配表达式出现一次或者多次的场景
?:匹配表达式出现0次或者1次
{n}:匹配表达式出现n次

关于匹配模式 分组和引用

(x):捕获符号,捕获并且记住
(?:x): 捕获但是不记住


一图解释所有流

关于分组
关于查找模式

x(?=y):匹配后面为y的x
x(!=y):匹配后面不为y的x
(?<=y)x:匹配前面为y的x
(?<!y)x:匹配前面不为y的x


image.png

如何将用户输入转义为正则表达式中的一个字面字符串:

function escapeRegExp(string){
    return string.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$&"); 
    //$&表示整个被匹配的字符串
}

关于工作中小小的应用,在一个字符串中需要查询另一个字符串的存在,因为需要在一个fullpath中找到另一个path的存在,但是因为path的顺序不一定能对上,所以把path先剪切成一个数组,然后组成一个正则表达式,只要能在fullpath当中匹配到path里面的元素就成功匹配

const fullPath = '1001,1002,1005'
const rowPath = '1005,1002'
const rowPathArr = rowPath.split(',');
let regexp = '.*';
rowPathArr.map(rPath => {
    regexp = regexp +  rPath + '.*'
})
let regex = new RegExp(regexp);
if (regex.test(fullpath)) {
    return true
}

正则表达式
RegExp正则对象
正则在线校验网站

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容