• 为什么要学会正则表达式


      一直以来,我都认为能手写正则表达式的人都是大神,至少不会是坑。正则表达式这个知识领域,在各种语言中被大神们运用的淋漓尽致。作为一个菜鸡程序员,向大神看齐的最简单的方式就是写一手简单粗暴的正则表达式。

      正则表达式是干什么的呢?

      举个最简单的例子,今天下午的时候测试人员给我提了一个bug,并且打上了严重的标签。其实看到这个bug的一瞬间,我就意识到是ios对Date方法的一下兼容性问题。至于在哪里出现的,对于我这个刚接触到移动端的人来说很迷茫。

      查了一下资料发现ios对new Date("2017-08-11 12:00:00")这个方法貌似不是很感冒,ios中不支持 “-” 连接日期。因此,由于后台传来的数据有两种,第一张是毫秒级别的时间戳,另一种就是“-”分割的日期。那么问题来了,如何区别这两种数据格式呢,其实我在看后端传来的数据时,有的毫秒数是传来的字符串的形式,因此单单地靠区分字符串还是数字是无法判断的。除了通过判断indexOf('-')是否大于-1之外,根据本文主题,我们还可以使用正则来判断:/-/.test('2018-01-01')。其中/-/就是一个用于匹配“-”的正则表达式,test()是正则表达式用于计算的方法。

      言归正传,当区分完成毫秒数还是带“-”的字符串之后,纵使我们可以使用简单的字符串转数组然后再转字符串的方式解决,但是太繁琐太笨重。此时,能写一手简单粗暴的正则表达式就变得尤为的重要。首先,我们要匹配出所有的“-”,然后将其替换成“/”。因此,我们要使用replace()这个方法。str.replace(/-/g, "/"),由于要匹配所有的“-”,我们使用了g这个全局修饰符,g等同于global,全局的意思。

      于是乎,一个看似棘手的问题,我们可以通过两个正则表达式和四行代码解决:

    if (/-/.test(time)) {
       let date = new Date(time.replace(/-/g, "/"));
    } else {
        let date = new Date(time);
    }

      正则表达式或许枯燥无味,但是一旦开启,将会是一个威力巨大的武器.

      看我神威,无坚不摧。

  • 相关阅读:
    验证信息json返回,前台接收显示无刷新。笔记
    ThinkPHP5 查询数据并处理结果
    PHP 数组和字符串互相转换实现方法
    php+jquery+ajax+json的一个最简单实例
    is_numeric 检测变量是否为数字或数字字符串
    PHP中使用cURL实现Get和Post请求的方法
    mb_substr实例
    推荐:多目标 mmoe
    多目标模型--DBMTL
    正负例优化
  • 原文地址:https://www.cnblogs.com/lunlunshiwo/p/9226989.html
Copyright © 2020-2023  润新知