diff --git a/03-JavaScript基础/21-内置对象:String.md b/03-JavaScript基础/21-内置对象:String.md index 581dc80..e103a35 100644 --- a/03-JavaScript基础/21-内置对象:String.md +++ b/03-JavaScript基础/21-内置对象:String.md @@ -338,9 +338,9 @@ ![](http://img.smyhvae.com/20180202_1503.png) -### 一些特殊方法 +### trim() -**1、trim()**:去除字符串前后的空白。 +`trim()`:去除字符串前后的空白。 代码举例: @@ -355,9 +355,17 @@ ![](http://img.smyhvae.com/20180202_1455.png) -2、**replace()**:替换。 +### replace() -举例: +`replace()`:将字符串中的指定内容,替换为新的内容并返回。不会修改原字符串。 + +语法: + +```javascript + 新的字符串 = str.replace(被替换的内容,新的内容); +``` + +代码举例: ```javascript //replace()方法:替换 diff --git a/03-JavaScript基础/22-正则表达式.md b/03-JavaScript基础/22-正则表达式.md index e0efd68..969fd4e 100644 --- a/03-JavaScript基础/22-正则表达式.md +++ b/03-JavaScript基础/22-正则表达式.md @@ -1,25 +1,41 @@ ## 正则表达式简介 -### 简介 - **定义**:正则表达式用于定义一些字符串的规则。 **作用**:计算机可以根据正则表达式,来检查一个字符串是否符合指定的规则;或者将字符串中符合规则的内容提取出来。 -### 创建正则表达的对象 +如果你想查看正则更多的内容,可以查阅官方文档关于 RegExp 这个内置对象的用法。 + +## 创建正则表达式的对象 + +### 方式一:使用构造函数创建 语法: ```javascript + var 变量 = new RegExp("正则表达式"); // 注意,参数是字符串 + var 变量 = new RegExp("正则表达式", "匹配模式"); // 注意,两个参数都是字符串 ``` 备注:`RegExp`的意思是 **Regular expression**。使用typeof检查正则对象,会返回object。 -那么,创建了正则表达式的对象后,该怎么使用呢?我们来看看下面的例子。 +上面的语法中,既可以传一个参数,也可以传两个参数。 -**代码举例1**:(传一个参数) +创建了正则表达式的对象后,该怎么使用呢?大致分为两个步骤: + +- (1)创建正则表达式的对象 reg。 + +- (2)使用 reg 的test() 方法,判断指定字符串是否符合规则。 + +我们来看看下面的例子。 + +**1、传一个参数时**: + +构造函数 RegExp 中,可以只传一个参数。 + +代码举例: ```javascript var reg = new RegExp("a"); // 定义一个正则表达式:检查一个字符串中是否含有 a @@ -38,12 +54,231 @@ 正则表达式的`test()`方法: ```javascript - test() + myReg.test(str); // 判断字符串 str 是否符合 指定的 myReg 这个正则表达式的规则 ``` -解释:使用这个方法可以用来检查一个字符串是否符合正则表达式的规则,如果符合则返回true,否则返回false。 +解释:使用`test()`这个方法可以用来检查一个字符串是否符合正则表达式的规则,如果符合则返回true,否则返回false。 + +**2、传两个参数时**:匹配模式 + +构造函数 RegExp 中,也可以传两个参数。我们可以传递一个**匹配模式**作为第二个参数。这个参数可以是: + +- `i` 忽略大小写。这里的 i 指的是 ignore。 + +- `g` 全局匹配模式。这里的 g 指的是 global。 + +代码举例: + +```javascript + var reg = new RegExp('A', 'i'); + var str = 'qiangu'; + + console.log(reg.test(str)); // 打印结果:true +``` + +### 方式二:使用字面量 + +我们可以使用字面量来创建正则表达式。 + +语法: + +```javascript + var 变量 = /正则表达式/; // 注意,这个语法里没有引号 + + var 变量 = /正则表达式/匹配模式; // 注意,这个语法里没有引号 +``` + +语法举例: + +```javascript + var reg = new RegExp("a", "i"); // 方式一 + + var reg = /a/i; // 方式二 +``` + +上面这两行代码的作用是等价的。 + +**以上两种方式的对比**: + +- 方式一:使用构造函数创建时,更加灵活,因为参数中还可以传递变量。 + +- 方式二:使用字面量的方式创建,更加简单。 + +代码举例: + +```javascript + var reg = /A/i; // 定义正则表达式的规则 + var str = "qiangu"; + + console.log(typeof reg); // 打印结果:object + console.log(reg.test(str)); // 打印结果:true +``` + +## 正则表达式的常见语法 + +### 检查一个字符串中是否包含 a或b + +**语法1**: + +```javascript + var reg = /a|b/; +``` + +解释:使用 `|` 表示`或`的意思。 + +**语法2**: + +```javascript + var reg = /[ab]/; // 跟上面的那行语法,是等价的 +``` + +解释:这里的`[]`也是表示`或`的意思。 + +`[]`这个符号在正则还是比较常用的。我们接下来看几个例子。 + +### []表示:或 + +一些规则: + +- `/[ab]/` 等价于 `/a|b/`:检查一个字符串中是否包含 **a或b** + +- `/[a-z]/`:检查一个字符串那种是否包含**任意小写字母** + +- `/[A-Z]/`:任意大写字母 + +- `/[A-z]/`:任意字母 + +- `/[0-9]/`:任意数字 + +- `/a[bde]c/`:检查一个字符串中是否包含 abc 或 adc 或 aec + +### [^ ] 表示:除了 + +举例1: + +```javascript + var reg = /[^ab]/; // 规则:字符串中,除了a、b之外,还有没有其他的字符内容 + var str = "acb"; + + console.log(reg.test(str)); // 打印结果:true +``` + +举例2:(可以用来验证某字符串是否为 纯数字) + +```javascript + var reg = /[^0-9]/; // 规则:字符串中,除了数字之外,还有没有其他的内容 + var str1 = "1991"; + var str2 = "199a1"; + + console.log(reg.test(str1)); // 打印结果:false (如果字符串是 纯数字,则返回 false) + console.log(reg.test(str2)); // 打印结果:true +``` + +## 支持正则表达式的 String 对象的方法 + + String对象的如下方法,是支持正则表达式的: +| 方法 | 描述 | 备注 | +|:-------------|:-------------|:-------------| +| split() | 将字符串拆分成数组 | | +| search() | 搜索字符串中是否含有指定内容 | | +| match() | 根据正则表达式,从一个字符串中将符合条件的内容提取出来 | | +| | | | + +下面来分别举例。 + +### split() + +**举例**:根据任意字母,将字符串拆分成数组。 + +代码实现:(通过正则) + +```javascript + var str = "1a2b3c4d5e6f7g"; + + var result = str.split(/[A-z]/); + console.log(result); +``` + +打印结果: + +```json + ["1", "2", "3", "4", "5", "6", "7", ""] +``` + +### search() + +`search()`:搜索字符串中是否含有指定内容。如果搜索到指定内容,则会返回第一次出现的索引;否则返回-1。 + +`search()`方法可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串。`serach()`只会查找第一个,即使设置全局匹配也没用。 + +**举例**: + +```javascript + var str = "hello abc hello aec afc"; + /* + * 搜索字符串中是否含有abc 或 aec 或 afc + */ + result = str.search(/a[bef]c/); + console.log(result); // 打印结果:6 +``` +### match() + +`match()`:根据正则表达式,从一个字符串中将符合条件的内容提取出来,封装到一个数组中返回(即使只查询到一个结果)。 + +**注意**:默认情况下,`match()`方法只会找到**第一个**符合要求的内容,找到以后就停止检索。我们可以设置正则表达式为**全局匹配**模式,这样就会匹配到所有的内容。 + +另外,我们可以为一个正则表达式设置多个匹配模式,且顺序无所谓。 + +**代码举例**: + +```javascript + var str = "1a2a3a4a5e6f7A8B9C"; + + var result1 = str.match(/[a-z]/); // 找到符合要求的第一个内容,然后返回 + var result2 = str.match(/[a-z]/g); // 设置为“全局匹配”模式,匹配字符串中所有的内容 + var result3 = str.match(/[a-z]/gi); // 设置多个匹配模式,且顺序无所谓 + + console.log(result1); // 打印结果:["a"] + console.log(result2); // 打印结果:["a", "a", "a", "a", "e", "f"] + console.log(result3); // 打印结果:["a", "a", "a", "a", "e", "f", "A", "B", "C"] +``` + +**总结**: + +match()这个方法还是很实用的,可以在一个很长的字符串中,提取出**有规则**的内容。这不就是爬虫的时候经常会遇到的场景么? + +### replace + +`replace()`:将字符串中的指定内容,替换为新的内容并返回。不会修改原字符串。 + + +语法: + +```javascript + 新的字符串 = str.replace(被替换的内容,新的内容); +``` + +参数解释: + +- 被替换的内容:可以接受一个正则表达式作为参数。 + +- 新的内容:默认只会替换第一个。如果需要替换全部符合条件的内容,可以设置正则表达式为**全局匹配**模式。 + +代码举例: + +代码举例: + +```javascript + //replace()方法:替换 + var str2 = "Today is fine day,today is fine day !!!" + + console.log(str2); + console.log(str2.replace("today","tomorrow")); //只能替换第一个today + console.log(str2.replace(/today/gi,"tomorrow")); //这里用到了正则,且为“全局匹配”模式,才能替换所有的today +``` + diff --git a/17-前端综合/前端开发积累.md b/17-前端综合/前端开发积累.md index ba83b57..c2163d9 100644 --- a/17-前端综合/前端开发积累.md +++ b/17-前端综合/前端开发积累.md @@ -9,7 +9,7 @@ SPU(Standard Product Unit):标准化产品单元。是商品信息聚合 比如说,针对 Kindle paperwhite4 这款阅读器,颜色分白色、黑色两种。那么,白色和黑色的sku是不一样的。因此,Kindle paperwhite4 这款阅读器有「**两个sku、一个spu**」。 -再比如说,针对 iPhone 8 这款手机,颜色有银色、红色、金色三种,存储空间有分64G、256G两种。那么,银色和红色的sku是不一样的,存储空间的不同,也是不同的sku。因此,iPhone 8 这款手机有「**六个sku、一个spu**」。 +再比如说,针对 iPhone 8 这款手机,颜色有银色、红色、金色三种,存储空间有分64G、256G两种。那么,64G和256G的sku是不一样的;不同的颜色,也代表着不同的sku。因此,iPhone 8 这款手机有「**六个sku、一个spu**」。 单品:对一种商品而言,当其品牌、型号、配置、等级、花色、包装容量、单位、生产日期、保质期、用途、价格、产地等属性中任一属性与其他商品存在不同时,可称为一个单品。