scriptOJ--你能做对下面这道题吗?

前言:scriptOJ 是首个 Web 前端开发评测系统,上面有很多前端题目,和一部分算法,前端人的OJ系统,没用过的小伙伴可以尝试下。  很早就听说这个网站了,不过开局第一题一直写不出来,今天又看了一下总算是搞定了,在我的解法中用到了比较多的有关正则方面的知识,在这里总结一下。下面就是进入首页会看到的第一题(好像定期会更换):下面是我的解法:const extname = (fil...
摘要由CSDN通过智能技术生成

scriptOJ 是首个 Web 前端开发评测系统,上面有很多前端题目,也涉及到算法,是前端er 的 OJ 系统,没用过的小伙伴可以尝试下。

很早就听说这个网站了,不过开局第一题一直写不出来,今天又看了一下总算是搞定了,在我的解法中用到了比较多的有关正则方面的知识,在这里总结一下。


下面就是进入首页会看到的第一题(好像定期会更换):

在这里插入图片描述


下面是我的解法:

const extname = (filename) => {
   
  let re = /\.[a-zA-Z]+/ig;
  
  if (re.test(filename)) {
    // 第一次匹配
    if (RegExp.leftContext == '') {
    // 第一次匹配左边没有字符(只有后缀名)
      return '';
    }

    let a = filename.match(re); // match会将匹配到的所有字符储存在一个数组中并返回

    return a[a.length - 1]; // 返回最后一次匹配到的字符串
  } else {
   
    return ''; // 没有匹配到任何后缀名,直接返回空字符串
  } 
}

用于测试的数据大概有这么几种:

var str1 = 'test.ms.hello.jpg';  // 有很多 . 分割的字符串,但只有最后一个才是后缀名
var str2 = '.png';               // 只有后缀名,要求返回一个空字符串
var str3 = 'hello';              // 没有后缀名,要求返回一个空字符串

全面总结一下解题中与正则相关的知识:

  • RegExp构造函数的属性
    • input:用于匹配的字符串
    • lastMatch:最近一次匹配到的字符串
    • lastParen:最近一次匹配到的捕获组
    • leftContext:input中lastMatch之前的字符串
    • rightContext:input中lastMatch之后的字符串
    • multiline:匹配是否用于多行模式

举例:

var str= "this has been a short summer";
var re=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值