You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 9-regular-expressions/03-regexp-unicode/article.md
+23-23Lines changed: 23 additions & 23 deletions
Original file line number
Diff line number
Diff line change
@@ -2,17 +2,17 @@
2
2
3
3
O JavaScript usa a [codificação Unicode](https://pt.wikipedia.org/wiki/Unicode) para strings. A maioria dos caracteres são codificados com 2 bytes, mas isso permite representar no máximo 65536 caracteres diferentes.
4
4
5
-
Esse alcance não é grande o bastante para codificar todos os caracteres possíveis, por isso alguns caracteres são codificados com 4 bytes, como o `𝒳` (X matemático) ou o `😄` (emoji sorridente), alguns hieróglifos e assim por diante.
5
+
Esse alcance não é grande o bastante para codificar todos os caracteres possíveis, por isso alguns caracteres são codificados com 4 bytes, como o `𝒳` (X matemático) ou o `😄` (emoji sorridente), alguns ideogramas e assim por diante.
6
6
7
7
Aqui estão os valores no Unicode de alguns caracteres:
8
8
9
-
| Carácter | Unicode | Contagem de bytes no Unicode|
10
-
|------------|---------|--------|
11
-
| a |`0x0061`| 2|
12
-
| ≈ |`0x2248`| 2|
13
-
|𝒳|`0x1d4b3`| 4 |
14
-
|𝒴|`0x1d4b4`| 4 |
15
-
|😄|`0x1f604`| 4 |
9
+
| Carácter | Unicode | Contagem de bytes no Unicode |
Note que caracteres como `a` e `≈` ocupam 2 bytes, enquanto os códigos para `𝒳`, `𝒴` e `😄` são maiores, e ocupam 4 bytes.
18
18
@@ -44,56 +44,56 @@ Por exemplo, `\p{Letter}` denota uma letra em qualquer língua. Também podemos
44
44
No exemplo abaixo três tipos de letras serão encontrados: Inglês, Georgiano e Coreano.
45
45
46
46
```js run
47
-
let str ="A ბ ㄱ";
47
+
let str ='A ბ ㄱ';
48
48
49
-
alert(str.match(/\p{L}/gu)); // A,ბ,ㄱ
50
-
alert(str.match(/\p{L}/g)); // null (nenhuma correspondência, \p não funciona sem a flag "u")
49
+
alert(str.match(/\p{L}/gu)); // A,ბ,ㄱ
50
+
alert(str.match(/\p{L}/g)); // null (nenhum casamento, \p não funciona sem a flag "u")
51
51
```
52
52
53
53
Estas são as principais categorias de caracteres e suas sub-categorias:
54
54
55
-
- Letra `L`:
55
+
- Letra (Letter) `L`:
56
56
- minúscula `Ll`
57
57
- modificadora `Lm`,
58
58
- titular `Lt`,
59
59
- maiúscula `Lu`,
60
60
- outra `Lo`.
61
-
- Número `N`:
61
+
- Número (Number) `N`:
62
62
- dígito decimal `Nd`,
63
63
- letras numéricas `Nl`,
64
64
- outro `No`.
65
-
- Pontuação `P`:
65
+
- Pontuação (Punctuation) `P`:
66
66
- conector `Pc`,
67
67
- traço `Pd`,
68
68
- aspas esquerdas `Pi`,
69
69
- aspas direitas `Pf`,
70
70
- abertura `Ps`,
71
71
- fechamento `Pe`,
72
72
- outro `Po`.
73
-
-Marcação `M` (diacríticos, etc.):
73
+
-Marcações Diacríticas (Mark) `M`:
74
74
- com espaço `Mc`,
75
75
- envolvente `Me`,
76
76
- sem espaço `Mn`.
77
-
-Símbolo`S`:
77
+
-Símbolos (Symbol)`S`:
78
78
- moeda `Sc`,
79
79
- modificador `Sk`,
80
80
- matemático `Sm`,
81
81
- outro `So`.
82
-
-Separador`Z`:
82
+
-Separadores (Separator)`Z`:
83
83
- linha `Zl`,
84
84
- parágrafo `Zp`,
85
85
- espaço `Zs`.
86
-
-Outro`C`:
86
+
-Outros (Other)`C`:
87
87
- controle `Cc`,
88
88
- formato `Cf`,
89
89
- não atribuído `Cn`,
90
90
- uso reservado `Co`,
91
91
- substituto `Cs`.
92
92
93
-
94
93
Então, se precisarmos de letras minúsculas por exemplo, podemos escrever `pattern:\p{Ll}`, símbolos de pontuação: `pattern:\p{P}` e assim por diante.
95
94
96
95
Existem outras categorias derivadas, como:
96
+
97
97
-`Alphabetic` (`Alpha`), inclui a categoria "Letters" `L`, e letras numéricas `Nl` (Exemplo: Ⅻ - Um caractere para o número romano 12), além de alguns outros símbolos `Other_Alphabetic` (`OAlpha`).
@@ -114,14 +114,14 @@ Um dígito hexadecimal pode ser indicado por `pattern:\p{Hex_Digit}`:
114
114
```js run
115
115
let regexp =/x\p{Hex_Digit}\p{Hex_Digit}/u;
116
116
117
-
alert("number: xAF".match(regexp)); // xAF
117
+
alert('number: xAF'.match(regexp)); // xAF
118
118
```
119
119
120
120
### Exemplo: Sinogramas Chineses
121
121
122
122
Vamos procurar por sinogramas chineses.
123
123
124
-
Há uma propriedade Unicode chamada `Script` (sistema de escrita), que pode receber diferentes valores: `Cyrillic` (Cirílico: Russo, Ucraniano, Sérvio), `Greek` (Grego), `Arabic` (Árabe), `Han` (Chinês) e assim por diante, [a lista completa pode ser encontrada aqui](https://en.wikipedia.org/wiki/Script_(Unicode)).
124
+
Há uma propriedade Unicode chamada `Script` (sistema de escrita), que pode receber diferentes valores: `Cyrillic` (Cirílico: Russo, Ucraniano, Sérvio), `Greek` (Grego), `Arabic` (Árabe), `Han` (Chinês) e assim por diante, [a lista completa pode ser encontrada aqui](<https://en.wikipedia.org/wiki/Script_(Unicode)>).
125
125
126
126
Para procurar por caracteres de um sistema de escrita específico nós devemos usar o `pattern:Script=<value>`. Para buscar letras cirílicas, por exemplo: `pattern:\p{sc=Cyrillic}`, para sinogramas chineses: `pattern:\p{sc=Han}`, e assim por diante:
0 commit comments