关于正则那破事

关于正则这玩意,一度让我心烦,看着那个不知道啥玩意的玩意,就是不想花时间去了解,当然正则的好处还是很明显,一般十几行代码才能解决的玩意,用正则一两行就解决了,看起来都高大上许多,以前都是需要用到,直接网上搜相关资料,压根就不想去了解怎么实现的,让我改变态度就是因为前不久的一系列面试,好几家公司面试题都是需要用到正则,看到我就放弃写了,因为这个让我吃了不少亏,所以暗下决心,自己还是得稍微学学,至少一些简单得正则还是得会得呀

 从网上找了一篇正则表达式练习题的博客,https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions#note,刚开始看这个,莫名其妙哦,都是些啥。然后我准备先看看文档了,

看的是mdn中关于正则所有API的介绍https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions#note,这个还是权威的,花了一个多小时啃了下, 有些东西还是感觉有点迷糊,来,再回头看看练习题

初级练习:1、求非负整数 : ^\d+$

他写的是这个,试了下,好像是可以,仔细看这个代码怎么实现的,噢,^匹配字符串开头。/d匹配数字,+表示知道不是数字就停止匹配了,$呢,我要数字一直匹配到结尾,嗯嗯,基本懂了。想了下,它的这个好像有点问题,要是数字是‘+12’,或者是0123,这个判断就不正确了,看来网上资料还是有些不靠谱哈,试着对着文档改了改

  let arr = ['打赏', '[email protected]', 'sd', '1029547925']

  function regexMatch (arr, reg) {
    let currentArr = []

    arr.forEach((string) => {
      if (reg.test(string)) {
        // string = string.replace(regex,'')
        currentArr.push(string)
      }
    })
    console.log(currentArr)
  }

  regexMatch(arr, /^[1-9|\+]\d+$/) //  1.求非负整数
  regexMatch(arr,/^[a-zA-Z]\w{7,9}$/)   // 长度为8-10的用户密码(以字母开头、数字、下划线)
  regexMatch(arr,/^[\u4e00-\u9fa5]+$/)  //只能有中文
   regexMatch(arr,/^[1-9]{4,14}@qq.com$/) //qq电子邮箱验证
  regexMatch(arr,/^[1-9a-zA-Z]{4,10}@[a-zA-Z]{2,10}\.com$/)//电子邮箱验证

  都试了下,感觉还可以,先这样,正则其实不太难,但是得稳下心来啃一啃,现在让我重新去写那些面试题,感觉还是比较轻松了

猜你喜欢

转载自www.cnblogs.com/huangbohang/p/10820734.html