Skip to content

Commit 577804f

Browse files
committed
feat: update translation
1 parent 2334ad7 commit 577804f

File tree

1 file changed

+40
-40
lines changed
  • 9-regular-expressions/02-regexp-character-classes

1 file changed

+40
-40
lines changed
Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# 字符类
22

3-
考虑一个实际的任务 - 我们有一个电话号码,例如 `"+7(903)-123-45-67"`,我们需要将其转换为纯数字:`79031234567`
3+
考虑一个实际的任务 —— 我们有一个电话号码,例如 `"+7(903)-123-45-67"`,我们需要将其转换为纯数字:`79031234567`
44

5-
为此,我们可以查找并删除所有非数字的内容。字符类可以帮助解决这个问题
5+
为此,我们可以查找并删除所有非数字的内容。字符类可以帮助我们实现它
66

7-
**字符类(Character classes)** 是一个特殊的符号,匹配特定集中的任何符号
7+
**字符类(Character classes)** 是一种特殊的符号,匹配特定集合中的任何符号
88

9-
首先,让我们探索“数字”类。它写为 `pattern:\d`,对应于“任何一个数字”。
9+
首先,让我们探索“数字”类。它写为 `pattern:\d`,对应于“任何一位数字”。
1010

1111
例如,让我们找到电话号码的第一个数字:
1212

@@ -18,18 +18,18 @@ let regexp = /\d/;
1818
alert( str.match(regexp) ); // 7
1919
```
2020

21-
如果没有标志 `pattern:g`,则正则表达式仅查找第一个匹配项,即第一个数字 `pattern:\d`
21+
如果没有修饰符 `pattern:g`,则正则表达式仅查找第一个匹配项,即第一个数字 `pattern:\d`
2222

23-
让我们添加 `pattern:g`标志来查找所有数字
23+
让我们添加修饰符 `pattern:g` 来查找所有数字
2424

2525
```js run
2626
let str = "+7(903)-123-45-67";
2727

2828
let regexp = /\d/g;
2929

30-
alert( str.match(regexp) ); // array of matches: 7,9,0,3,1,2,3,4,5,6,7
30+
alert( str.match(regexp) ); // 匹配项构成的数组:7,9,0,3,1,2,3,4,5,6,7
3131

32-
// let's make the digits-only phone number of them:
32+
// 让我们将其输出为纯数字构成的电话号码:
3333
alert( str.match(regexp).join('') ); // 79031234567
3434
```
3535

@@ -41,16 +41,16 @@ alert( str.match(regexp).join('') ); // 79031234567
4141
: 数字:从 `0``9` 的字符。
4242

4343
`pattern:\s`("s" 来自 "space")
44-
: 空格符号:包括空格,制表符 `\t`,换行符 `\n` 和其他少数稀有字符,例如 `\v``\f``\r`
44+
: 空格符号:包括空格,制表符 `\t`,换行符 `\n` 和其他少数稀有字符,例如 `\v``\f``\r`
4545

4646
`pattern:\w`("w" 来自 "word")
4747
: “单字”字符:拉丁字母或数字或下划线 `_`。非拉丁字母(如西里尔字母或印地文)不属于 `pattern:\w`
4848

49-
例如,`pattern:\d\s\w`表示“数字”,后跟“空格字符”,后跟“单字字符”,例如 `match:1 a`
49+
例如,`pattern:\d\s\w` 表示“数字”,后跟“空格字符”,后跟“单字字符”,例如 `match:1 a`
5050

5151
**正则表达式可能同时包含常规符号和字符类。**
5252

53-
例如,`pattern:CSS\d` 匹配字符串 `match:CSS` 与后面的数字
53+
例如,`pattern:CSS\d` 匹配 `match:CSS` 后面带有一个数字的字符串
5454

5555
```js run
5656
let str = "Is there CSS4?";
@@ -59,7 +59,7 @@ let regexp = /CSS\d/
5959
alert( str.match(regexp) ); // CSS4
6060
```
6161

62-
我们还可以使用许多字符类
62+
我们还可以使用更多字符类
6363

6464
```js run
6565
alert( "I love HTML5!".match(/\s\w\w\w\w\d/) ); // ' HTML5'
@@ -71,7 +71,7 @@ alert( "I love HTML5!".match(/\s\w\w\w\w\d/) ); // ' HTML5'
7171

7272
## 反向类
7373

74-
对于每个字符类,都有一个“反向类”,用相同的字母表示,但要以大写书写形式
74+
对于每个字符类,都有一个“反向类”,用相同的字母表示,但是大写的
7575

7676
“反向”表示它与所有其他字符匹配,例如:
7777

@@ -84,25 +84,25 @@ alert( "I love HTML5!".match(/\s\w\w\w\w\d/) ); // ' HTML5'
8484
`pattern:\W`
8585
: 非单字字符:除 `pattern:\w` 以外的任何字符,例如非拉丁字母或空格。
8686

87-
在这一章的开头,我们看到了如何从 `subject:+7(903)-123-45-67` 这样的字符串中创建一个只包含数字的电话号码: 找到所有的数字并将它们连接起来。
87+
在本章的开头,我们看到了如何从 `subject:+7(903)-123-45-67` 这样的字符串中创建一个只包含数字的电话号码找到所有的数字并将它们连接起来。
8888

8989
```js run
9090
let str = "+7(903)-123-45-67";
9191

9292
alert( str.match(/\d/g).join('') ); // 79031234567
9393
```
9494

95-
另一种快捷的替代方法是查找非数字 `pattern:\D` 并将其从字符串中删除:
95+
另一种快捷的替代方式是查找非数字 `pattern:\D` 并将其从字符串中删除:
9696

9797
```js run
9898
let str = "+7(903)-123-45-67";
9999

100100
alert( str.replace(/\D/g, "") ); // 79031234567
101101
```
102102

103-
## 点(.)是匹配“任何字符”
103+
## 点(.)匹配“任何字符”
104104

105-
`pattern:.` 是一种特殊字符类,它与 “除换行符之外的任何字符” 匹配。
105+
`pattern:.` 是一种特殊字符类,它与“除换行符之外的任何字符”匹配。
106106

107107
例如:
108108

@@ -117,45 +117,45 @@ let regexp = /CS.4/;
117117

118118
alert( "CSS4".match(regexp) ); // CSS4
119119
alert( "CS-4".match(regexp) ); // CS-4
120-
alert( "CS 4".match(regexp) ); // CS 4 (space is also a character)
120+
alert( "CS 4".match(regexp) ); // CS 4(空格也是一个字符)
121121
```
122122

123123
请注意,点表示“任何字符”,而不是“缺少字符”。必须有一个与之匹配的字符:
124124

125125
```js run
126-
alert( "CS4".match(/CS.4/) ); // null, no match because there's no character for the dot
126+
alert( "CS4".match(/CS.4/) ); // null,没有匹配项,因为这里没有与点匹配的字符
127127
```
128128

129-
### 带有“s”标志时点字符类严格匹配任何字符
129+
### 带有修饰符 "s" 时点字符类匹配任何字符
130130

131131
默认情况下,点与换行符 `\n` 不匹配。
132132

133133
例如,正则表达式 `pattern:A.B` 匹配 `match:A`,然后匹配 `match:B` 和它们之间的任何字符,除了换行符`\n`
134134

135135
```js run
136-
alert( "A\nB".match(/A.B/) ); // null (no match)
136+
alert( "A\nB".match(/A.B/) ); // null(无匹配项)
137137
```
138138

139-
在许多情况下,当我们希望用点来表示“任何字符”包括换行符)时
139+
在很多情况下,我们希望点能够匹配“任何字符”包括换行符。
140140

141-
这就是标志 `pattern:s` 所做的。如果有一个正则表达式,则点 `pattern:.` 实际上匹配任何字符
141+
这就是修饰符 `pattern:s` 所做的事。如果有一个正则表达式具有该修饰符,那么点 `pattern:.` 能够匹配任何字符
142142

143143
```js run
144-
alert( "A\nB".match(/A.B/s) ); // A\nB (match!)
144+
alert( "A\nB".match(/A.B/s) ); // A\nB(匹配了!)
145145
```
146146

147-
````warn header="不支持 Firefox、IE、Edge"
148-
使用前可从 <https://caniuse.com/#search=dotall> 确认以获得最新的支持状态。在撰写本文时,它不包括 Firefox、IE、Edge
147+
````warn header="IE 浏览器不支持"
148+
IE 浏览器不支持 `pattern:s` 修饰符
149149
150-
幸运的是,有一种替代方法可以在任何地方使用。我们可以使用诸如 `pattern:[\s\S]` 之类的正则表达式来匹配“任何字符”。
150+
幸运的是,有一个替代方案,我们可以使用像 `pattern:[\s\S]` 这样的正则表达式来匹配“任何字符”(此模式将在 <info:regexp-character-sets-and-ranges> 中介绍)
151151
152152
```js run
153-
alert( "A\nB".match(/A[\s\S]B/) ); // A\nB (match!)
153+
alert( "A\nB".match(/A[\s\S]B/) ); // A\nB(匹配了!)
154154
```
155155
156-
模式 `pattern:[\s\S]` 从字面上说:“空格字符或非空格字符”。换句话说,“任何东西”。我们可以使用另一对互补的类,例如 `pattern:[\d\D]`。甚至是 `pattern:[^]` —— 意思是匹配任何字符,除了什么都没有。
156+
模式 `pattern:[\s\S]` 从字面上意思是:“空格字符或非空格字符”。换句话说,“任何字符”。我们可以使用另一对互补的类,例如 `pattern:[\d\D]`。甚至是 `pattern:[^]` —— 意思是匹配任何字符,除了什么都没有。
157157
158-
如果我们希望两种“点”都使用相同的模式,也可以使用此技巧:实际的点 `pattern:.` 具有常规方式(“不包括换行符”)以及一种使用 `pattern:[\s\S]` 或类似形式匹配“任何字符”。
158+
如果我们希望两种“点”都使用相同的模式,也可以使用此技巧:实际的点 `pattern:.` 表现常规方式(“不包括换行符”),以及带有 `pattern:[\s\S]` 或类似形式匹配“任何字符”。
159159
````
160160

161161
````warn header="注意空格"
@@ -166,20 +166,20 @@ alert( "A\nB".match(/A[\s\S]B/) ); // A\nB (match!)
166166
让我们尝试查找由连字符(-)分隔的数字:
167167
168168
```js run
169-
alert( "1 - 5".match(/\d-\d/) ); // null, no match!
169+
alert( "1 - 5".match(/\d-\d/) ); // null,没有匹配项!
170170
```
171171
172-
让我们修复一下,在正则表达式中添加空格:\ d-\ d`:
172+
让我们修复一下,在正则表达式中添加空格 `pattern:\d - \d`:
173173
174174
```js run
175-
alert( "1 - 5".match(/\d - \d/) ); // 1 - 5, now it works
176-
// or we can use \s class:
177-
alert( "1 - 5".match(/\d\s-\s\d/) ); // 1 - 5, also works
175+
alert( "1 - 5".match(/\d - \d/) ); // 1 - 5,现在可以了
176+
// 或者我们可以使用 \s 类:
177+
alert( "1 - 5".match(/\d\s-\s\d/) ); // 1 - 5,也可以
178178
```
179179
180-
**空格是一个字符。与其他字符同等重要。**
180+
**一个空格是一个字符。与其他字符同等重要。**
181181
182-
我们无法在正则表达式中添加或删除空格,并且期望能正常工作
182+
我们无法在正则表达式中添加或删除空格后,还期望它的作用能像之前那样不被改变
183183
184184
换句话说,在正则表达式中,所有字符都很重要,空格也很重要。
185185
````
@@ -194,10 +194,10 @@ alert( "1 - 5".match(/\d\s-\s\d/) ); // 1 - 5, also works
194194
- `pattern:\S` —— 除了 `pattern:\s`
195195
- `pattern:\w` —— 拉丁字母,数字,下划线 `'_'`
196196
- `pattern:\W` —— 除了 `pattern:\w`
197-
- `pattern:.` —— 任何带有 `'s'` 标志的字符,否则为除换行符 `\n`之外的任何字符。
197+
- `pattern:.` —— 带有修饰符 `'s'` 时匹配任何字符,否则匹配除换行符 `\n` 之外的任何字符。
198198

199199
……但这还不是全部!
200200

201-
JavaScript 用于字符串的 Unicode 编码提供了许多字符属性,例如:这个字母属于哪一种语言(如果它是一个字母)它是标点符号吗等等。
201+
JavaScript 用于字符串的 Unicode 编码提供了很多字符属性,例如:这个字母属于哪种语言(如果它是一个字母)它是标点符号吗等等。
202202

203-
我们也可以通过这些属性进行搜索。这需要标志 `pattern:u`在下一篇文章中介绍
203+
我们也可以通过这些属性进行搜索。这需要修饰符 `pattern:u`我们将在下一篇文章中介绍

0 commit comments

Comments
 (0)