Date
跳转到“Date”| 知识点分类 | 说明 | 代码示例 |
|---|---|---|
| Date对象 | 用于表示和操作日期和时间 | let now = new Date(); |
| 获取当前时间 | 获取系统当前时间 | let now = new Date(); |
| 获取年份 | 获取当前年份 | now.getFullYear(); |
| 获取月份 | 获取当前月份,月份从0开始 | now.getMonth(); |
| 获取日期 | 获取当前日期 | now.getDate(); |
| 获取星期 | 获取当前是星期几 | now.getDay(); |
| 获取小时 | 获取当前小时(24小时制) | now.getHours(); |
| 获取分钟 | 获取当前分钟 | now.getMinutes(); |
| 获取秒 | 获取当前秒 | now.getSeconds(); |
| 获取毫秒数 | 获取当前毫秒数 | now.getMilliseconds(); |
| 获取时间戳 | 获取当前时间的时间戳 | now.getTime(); |
| 创建指定日期时间 | 创建一个指定日期和时间的Date对象 | let d = new Date(2015, 5, 19, 20, 15, 30, 123); |
| ISO 8601字符串解析 | 解析ISO 8601格式的日期时间字符串 | let d = Date.parse('2015-06-24T19:49:22.875+08:00'); |
| 时区处理 | 显示本地时间或UTC时间 | d.toLocaleString();, d.toUTCString(); |
| 时间戳转换 | 将时间戳转换为Date对象 | let d = new Date(1435146562875); |
| 当前时间戳获取 | 获取当前时间的时间戳 | Date.now(); 或 new Date().getTime(); |
let now = new Date();now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)now.getFullYear(); // 2015, 年份now.getMonth(); // 5, 月份,注意月份范围是0~11,5表示六月now.getDate(); // 24, 表示24号now.getDay(); // 3, 表示星期三now.getHours(); // 19, 24小时制now.getMinutes(); // 49, 分钟now.getSeconds(); // 22, 秒now.getMilliseconds(); // 875, 毫秒数now.getTime(); // 1435146562875, 以number形式表示的时间戳
// JavaScript的Date对象月份值从0开始,牢记0=1月,1=2月,2=3月,……,11=12月。
// 使用Date.parse()时传入的字符串使用实际月份01~12,转换为Date对象后getMonth()获取的月份值为0~11。let d = Date.parse('2015-06-24T19:49:22.875+08:00');console.log(d); // 1435146562875let d = new Date(1435146562875);d; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)d.getMonth(); // 5RegExp
跳转到“RegExp”正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。
| 知识点分类 | 说明 | 代码示例 |
|---|---|---|
| 正则表达式 | 用于匹配字符串中字符组合 | - |
| 创建正则表达式 | 直接量或RegExp构造函数 | /ABC\-001/ 或 new RegExp('ABC\\-001'); |
| 测试匹配 | 测试字符串是否符合正则表达式 | re.test('010-12345'); |
| 切分字符串 | 使用正则表达式切分字符串 | 'a b c'.split(/\s+/); |
| 分组 | 提取匹配字符串中的子串 | re.exec('010-12345'); |
| 贪婪匹配 | 默认匹配尽可能多的字符 | re.exec('102300'); |
| 全局搜索 | 进行全局匹配,多次搜索 | let r1 = /test/g; |
| 特殊标志 | 忽略大小写(i)、多行匹配(m) | let r2 = new RegExp('test', 'gi'); |
基于everything的正则化语法
| 语法 | 说明 | 代码示例 |
|---|---|---|
| a|b | 匹配 “a” 或 “b” | 用于选择,例如 /a|b/ 可以匹配 “apple” 中的 “a” 或 “rabbit” 中的 “b”。 |
| gr(a|e)y | 匹配 “gray” 或 “grey” | 使用括号进行组合,例如 /gr(a|e)y/ 可以匹配 “grey” 和 “gray”。 |
| . | 匹配任一字符 | 点号代表任意字符,例如 /a.b/ 可以匹配 “abb”, “axb” 等。 |
| [abc] | 匹配任一字符:“a” 或 “b” 或 “c” | 字符集,例如 /[abc]/ 可以匹配 “a”, “b”, 或 “c”。 |
| [^abc] | 匹配任一字符,但不包括 “a”, “b”, “c” | 否定字符集,例如 /[^abc]/ 可以匹配除了 “a”, “b”, “c” 之外的任何字符。 |
| [a-z] | 匹配从 “a” 到 “z” 之间的任一字符 | 范围匹配,例如 /[a-z]/ 可以匹配任何小写字母。 |
| [a-zA-Z] | 匹配从 “a” 到 “z”, 及从 “A” 到 “Z” 之间的任一字符 | 范围匹配,例如 /[a-zA-Z]/ 可以匹配任何字母。 |
| ^ | 匹配文件名的头部 | 行的开始,例如 /^The/ 可以匹配以 “The” 开头的字符串。 |
| $ | 匹配文件名的尾部 | 行的结束,例如 /end$/ 可以匹配以 “end” 结尾的字符串。 |
| ( ) | 匹配标记的子表达式 | 分组,例如 /(\w+) (\w+)/ 可以匹配两个单词,如 “John Doe”。 |
| \n | 匹配第 nth 个标记的子表达式, nth 代表 1 到 9 | 反向引用,例如 /(\w+) \1/ 可以匹配两个相同的单词。 |
| \b | 匹配字词边界 | 边界匹配,例如 /\bthe\b/ 可以匹配 “the” 但不匹配 “there”。 |
| * | 匹配前一项内容 0 或多次 | 贪婪量词,例如 /a*/ 可以匹配 “aaa” 或 “a” 或空字符串。 |
| ? | 匹配前一项内容 0 或 1 次 | 懒惰量词,例如 /colou?r/ 可以匹配 “color” 或 “colour”。 |
| + | 匹配前一项内容 1 或多次 | 贪婪量词,例如 /a+/ 至少匹配一个 “a”。 |
| *? | 匹配前一项内容 0 或多次 (懒惰模式) | 非贪婪量词,例如 /a*?b/ 会尽可能少地匹配 “a”,直到遇到 “b”。 |
| +? | 匹配前一项内容 1 或多次 (懒惰模式) | 非贪婪量词,例如 /a+?b/ 会尽可能少地匹配 “a”,直到遇到 “b”。 |
| {x} | 匹配前一项内容 x 次 | 固定次数,例如 /a{3}/ 精确匹配三个 “a”。 |
| {x,} | 匹配前一项内容 x 或多次 | 最小次数,例如 /a{2,}/ 至少匹配两个 “a”。 |
| {x,y} | 匹配前一项内容次数介于 x 和 y 之间 | 范围次数,例如 /a{2,3}/ 匹配两个或三个 “a”。 |
| \ | 特殊转义字符 | 转义特殊字符或表示特殊序列,例如 /\./ 匹配点号 ”.”。 |
正则化中的括号的使用
| 符号 | 说明 | 用途 | 代码示例 | |
|---|---|---|---|---|
() | 分组和捕获 | 将多个表达式组合成一个单元,并且可以捕获匹配的文本 | (ab) 匹配 “ab” 并捕获它作为一个分组,`(a | b)` 匹配 “a” 或 “b” 并捕获匹配的项。 |
[] | 字符集 | 匹配括号内的任意一个字符 | [abc] 匹配 “a”、“b” 或 “c” 中的任意一个字符,[A-Z] 匹配任何大写字母。 | |
{} | 量词 | 指定前面的元素出现的次数 | {3} 表示前面的元素恰好出现三次,{3,} 表示至少出现三次,{2,5} 表示出现次数在2到5次之间。 |
1)分组和捕获:
let regex = /(\d{4})-(\d{2})-(\d{2})/;let result = regex.exec('2024-08-10');console.log(result[1]); // 输出年份 2024console.log(result[2]); // 输出月份 08console.log(result[3]); // 输出日期 102)字符集:
let regex = /[abc]/;console.log('acb'.match(regex)); // 输出 ['a']console.log('xyz'.match(regex)); // 输出 null,因为没有匹配项3)量词:
let regex = /a{3}/;console.log('aaaa'.match(regex)); // 输出 'aaa'console.log('aa'.match(regex)); // 输出 null,因为 'a' 没有恰好出现三次
regex = /a{3,}/;console.log('aaaa'.match(regex)); // 输出 'aaaa','a' 出现四次,至少三次
regex = /a{2,5}/;console.log('aaaaa'.match(regex)); // 输出 'aaaaa','a' 出现五次,介于2到5次之间JSON
跳转到“JSON”JSON还定死了字符集必须是UTF-8,表示多语言就没有问题了。为了统一解析,JSON的字符串规定必须用双引号"",Object的键也必须用双引号""。是JavaScript的一个子集。把任何JavaScript对象变成JSON,就是把这个对象序列化成一个JSON格式的字符串,这样才能够通过网络传递给其他计算机。如果我们收到一个JSON格式的字符串,只需要把它反序列化成一个JavaScript对象,就可以在JavaScript中直接使用这个对象了。
| 数据类型 | 说明 | JSON代码示例 | JavaScript代码示例 |
|---|---|---|---|
| number | 表示数字,与JavaScript中的数字类型一致 | 123, -45.67, 4.89e-2 | let num = 123; |
| boolean | 表示逻辑实体,只有两个值:true 或 false | true, false | let isApproved = true; |
| string | 表示字符串,用双引号括起来 | "Hello, world!", "JSON" | let message = "Hello, world!"; |
| null | 表示空值或无值 | null | let noValue = null; |
| array | 表示数组,用方括号括起来,可以包含多种类型的数据 | [1, 2, "three", null, true] | let array = [1, 2, "three", null, true]; |
| object | 表示对象,用花括号括起来,包含零个或多个键值对 | {"name": "John", "age": 30, "isStudent": false} | let person = {name: "John", age: 30, isStudent: false}; |
| 知识点分类 | 说明 | 代码示例 |
|---|---|---|
| JSON | 轻量级的数据交换格式 | - |
| 序列化 | 将JavaScript对象转换为JSON字符串 | JSON.stringify(xiaoming); |
| 格式化序列化 | 格式化输出JSON字符串 | JSON.stringify(xiaoming, null, ' '); |
| 筛选序列化 | 序列化指定属性 | JSON.stringify(xiaoming, ['name', 'skills'], ' '); |
| 自定义序列化 | 通过函数自定义序列化过程 | JSON.stringify(xiaoming, convert, ' '); |
| toJSON方法 | 定义对象的自定义序列化行为 | xiaoming.toJSON(); |
| 反序列化 | 将JSON字符串转换为JavaScript对象 | JSON.parse('{"name":"小明","age":14}'); |
| 自定义反序列化 | 通过函数自定义反序列化过程 | JSON.parse('{"name":"小明","age":14}', function(key, value) {...}); |