正则表达式中断言的使用

啰嗦几句

  1. 正则表达式中的断言叫零宽度断言,分别有以下几种情况
    • 零宽度正先行断言,表达式为(?=exp)
    • 零宽度负先行断言,表达式为(?!exp)
    • 零宽度正后发断言,表达式为(?<=exp)
    • 零宽度负后发断言,表达式为(?<!exp)
  2. 搞得很拗口,简单一点上述4种情况翻译成人话分别是:后面是xxx,后面不是xxx,前面是xxx,前面不是xxx,就这么回事;
  3. 以下通过几个示例分别来验证使用效果

代码示例

以一段html代码为例,首先匹配出所有的a标签

无断言正常匹配

let html = `
    <div>
        <a href="h[......]

继续阅读

正则表达式校验密码强度

需求分析

  • 密码合法字符包括:数字、字母大小写、标点符号;
  • 密码强度一般需要以上类型的组合及长度要求;

功能实现

  1. 先分别写出以上4种组合的正则表达式
let password = 'aBcdefg123!'
// 数字
let reg1 = '\\d';
// 字母
let reg21 = '[a-z]';
let reg22 = '[A-Z]';
// 符号
let reg3 = '[`\\-=\\[\\]\\\\;\',.\/~!@#$%^&*()_+{}|:"<>?]';
  1. 检测整个密码是否符合以上组合匹配要求及长度要求6-20位
// 混合匹配[......]

继续阅读

Javascript日期格式化的简单实现

简要说明

  • 首先这是一个最简单的实现,并不严谨,但能说明问题,将日期格式化的核心思想体现出来,这是重点;
  • 其次,这只是实现日期格式化的一种方式,并不是唯一方式,这种方式相对比较简单,仅供参考;

实现原理

  1. 通过Date对象的相关方法获取到年月日时分秒等数据,再定义格式化的键比如:年对y,月对应M等,生成一个键值对象;
  2. 最为核心的就是正则匹配了,将格式化字符串进行正则匹配替换即可,关于正则的使用那是一门大学问,需要多点时间去吭;
  3. 以下是一个简单的示例代码,可根据需要完善。

示例代码

function (date, fmt = 'yyyy-MM-dd') {
    let map[......]

继续阅读

Promise的简单实现

1、Promise在javascript中的重要性不言而喻,但很多同学并不清楚内部的实现机理,我就我的理解与大家分享一下;

2、最简单的办法就是根据官方的Promise效果来实现相同的效果,我之前也看过网上的相关实现,全篇看到底就懵了,我想能不能出浅入深一步一步来;

3、好了,先实现一个最简单的,只实现then方法,能够根据resolve与reject取到相关结果,仅做功能实现,后续再完善

1、promise.js

/**
 * Promise简单实现 v0.0.1
 *
 * Date:2020-09-24
 *
 * Author:yusian
 */
(function (win[......]

继续阅读