Miracle

Results 99 issues of Miracle

>正则表达式,有木有人像我一样,学了不知道多少遍,学的时候看起来都懂了,过一段时间就又忘的差不多了,等真正要用到的时候,还是一脸懵逼。说到底还是练习的不够多,一直处于只看不做的程度上。所以搜集了这些正则习题,来保证温故而知新。建议读者看完题目后可以自己先做一做,然后再看实现方法。本文不讲基础,只记录习题,如果后续有新的题目,也会保持更新。 1、var s1 = "get-element-by-id"; 给定这样一个连字符串,写一个function转换为驼峰命名法形式的字符串 getElementById ``` var f = function(s) { return s.replace(/-\w/g, function(x) { return x.slice(1).toUpperCase(); }) } ``` 2、判断字符串是否包含数字 ``` function containsNumber(str) { var regx =...

可能用过的正则表达式 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间) ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$ 电子邮件 ^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})*$ 匹配base64 ^data:([A-Za-z-+\/]+);base64,(.+)$ 起源 1940年:正则表达式最初的想法来自两位神经学家:沃尔特·皮茨与麦卡洛克,他们研究出了一种用数学方式来描述神经网络的模型。 1956年:一位名叫史蒂芬·克林的数学科学家发表了一篇题目是《神经网事件的表示法》的论文,利用称之为正则集合的数学符号来描述此模型,引入了正则表达式的概念。正则表达式被作为用来描述其称之为“正则集的代数”的一种表达式,因而采用了“正则表达式”这个术语。 1968年:C语言之父、UNIX之父肯·汤普森把这个“正则表达式”的理论成果用于做一些搜索算法的研究,他描述了一种正则表达式的编译器,于是出现了应该算是最早的正则表达式的编译器qed(这也就成为后来的grep编辑器)。 Unix使用正则之后,正则表达式不断的发展壮大,然后大规模应用于各种领域,根据这些领域各自的条件需要,又发展出了许多版本的正则表达式,出现了许多的分支。我们把这些分支叫做“流派”。 1987年:Perl语言诞生了,它综合了其他的语言,用正则表达式作为基础,开创了一个新的流派,Perl流派。之后很多编程语言如:Python、Java、Ruby、.Net、PHP等等在设计正则式支持的时候都参考Perl正则表达式。 引擎分类 正则表达式有一系列的语法,随便举几个例子: 横向模糊匹配:量词 *, +, ?, {m,n} 纵向模糊匹配:字符集 [abc], 多选分支(p1|p2|p3) 这里不讲使用,而是会着重描述一下正则表达式的正则引擎及其原理 正则表达式一般都是通过有限自动机来实现的,正则表达式匹配字符串的过程,简单来说可以分解为两步: 将正则表达式转换成有限自动机 有限自动机输入字符串执行 正则引擎主要可以分为不同的两大类:DFA和NFA(其实还有一种...

> VS Code 作为一个流行的编辑器,其轻便快速也使开发人员有很好的体验。我们在VS Code中安装的各式主题,Lint工具等,其实都是一个个的插件。VS Code内置了扩展能力,提供了一系列的插件API。基于此,我们可以很轻松地开发自己的插件,并应用到平时的开发中。 VS Code提供的API很多,本文通过实现一个简单的base64图片预览,来走通一个插件的开发发布使用流程 插件名称:byte-base64-viewer 插件使用方式:鼠标悬浮在base64之上,悬浮对应的图片,如下 ![image.png](https://cdn.nlark.com/yuque/0/2021/png/716445/1626696199523-e4467fe0-2929-4e2e-93ee-1e57d20b4632.png#align=left&display=inline&height=95&margin=%5Bobject%20Object%5D&name=image.png&originHeight=189&originWidth=342&size=14337&status=done&style=none&width=171) ### 环境准备 1. Node 环境 1. VS Code编辑器 ### 开发流程 #### 1. 安装插件项目生成器 ```shell npm install -g yo generator-code...

#### 习题 > 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。 > > > > 示例 1: > > 输入: nums = [0,1] > 输出: 2 > 说明: [0, 1]...

#### 习题 > 给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组: > > 子数组大小 至少为 2 ,且 > 子数组元素总和为 k 的倍数。 > 如果存在,返回 true ;否则,返回 false 。 > > 如果存在一个整数 n ,令整数 x...

#### 习题 > 给出一个字符串 s(仅含有小写英文字母和括号)。 > > 请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。 > > 注意,您的结果中 不应 包含任何括号。 > > > > 示例 1: > > 输入:s = "(abcd)" > 输出:"dcba" > 示例 2: >...

#### 习题 > 有台奇怪的打印机有以下两个特殊要求: > > 打印机每次只能打印由 同一个字符 组成的序列。 > 每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符。 > 给你一个字符串 s ,你的任务是计算这个打印机打印它需要的最少打印次数。 > > > 示例 1: > > 输入:s = "aaabbb" > 输出:2 > 解释:首先打印 "aaa"...

#### 题目 > 给一非空的单词列表,返回前 k 个出现次数最多的单词。 > > 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。 > > 示例 1: > > 输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2 > 输出: ["i", "love"] >...

```javascript /** * 浅拷贝 * * @param {*} obj */ var shallowCopy = function (obj) { if (typeof obj != 'object') return; var newObj = obj instanceof Array ? []...

#### 习题 > 未知 整数数组 arr 由 n 个非负整数组成。 > > 经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encoded[i] = arr[i] XOR arr[i + 1] 。例如,arr = [1,0,2,1] 经编码后得到 encoded...