正则表达式的一些用法

本文介绍了如何使用ES6标准的正则表达式从字符串'10011001000111'中找出对称的子串,如'10'、'0011'、'01'、'1100'等。通过代码示例和注释详细解释了实现过程,并欢迎读者留言讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 


下面是使用了正则表达式,从字符串 ‘10011001000111’ 中 晒选出 ‘10’ 、‘0011’、‘01’、‘1100’等诸如此量对称的字符串块出来。

在其中使用的是ES6标准来编写的,具体可以查看代码的注释。有疑问的可以留言一起讨论!

1 export default (str)=>{         
2    let r =[];                ///先准备好一个数组容器,把结果放进去
3    let match = (str) =>{     ///定义一个函数,用来处理截取过来的字串   
4        let j = str.match(/^(0+|1+)/)[0];  ///这里使用了Array.prototype.match()其返回数组
          //////使用了 ^()的意思是匹配字符串中第一个含有括号里面的字符
          //////而 0+ 是指匹配到0 或者 00 或者 00000000 等诸如此类的字符。
5        let o = (j[0]^1).toString().repeat(j.length);
          ////匹配后拿到j 数组里面的第一个元素 然后对其进行 ^1 的运算(既0=>1 或 1=>0 的操作)
          ////然后使用repeat()方法对其进行补字符长度补全的操作,例如目前是两位:00 占用两个位,如
          ////果需要4个位,则用 repeat(4)将 00 补全位 0000,

          ////这个算法的核心是,利用自己建立的模板 比如 通过以下一行代码,建立了如‘0011’ ‘10’等
          ////的模板,然后跟截取过来的字符串做 正则匹配对比,如果有则返回此 字符段 没有则返回空。
          ////其核心就是以上的步骤,希望了解里面的匹配原则,再去编写算法,这样才能对这算法印象深刻
6        let reg = new RegExp(`^(${j}${o})`);
7        if(reg.test(str)){
8            return RegExp.$1
9        };
10        else{
11            return '';
12        }  
13    }
14    for(let i= 0; i<str.length-1; i++){
15        let sub = match(str.slice(i))
16        if(sub) {
17            r.push(sub);
18        }
19    }
20    return r;
21 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值