JS-0901 - JavaScript Completo ES6 - Regexp: seleção

Expressões regulares de seleção
Primeiramente Regular Expression englobam um conjunto de recursos extensos, existindo até livros somente sobre este assunto e com implementação em diversas linguagens de programação, com bastante similaridade de sintaxe.
Regex, cujo construtor em JS é RegExp, são expressões utilizadas para buscas e substituições de padrões em strings, colocados entre barras (//), muito utilizados nos métodos replace e split. O padrão de seleção pode ser colocado dentro de uma variável, para facilitar a visualização. Ex:
Abaixo, serão listadas algumas regras de busca:
Literal
Utilização de um caractere literal para realizar uma busca específica deste. Cada caractere passado no regex é interpretado como uma sequência de caracteres ordenados e esta ordem também é utilizada como referência. A busca não é sobre uma palavra e sim sobre uma cadeia de caracteres:
Flags
As flags modificam o padrão de interpretação das regex. É colocada após a última barra.
- g: tem o significado de global, retornando todos os resultados que houver de acordo com o padrão passado. Sem o "g" o retorno será ao primeiro caractere encontrado.
- i: ignora a diferença entre maiúsculo e minúsculo. As flags podem ser combinadas.
- m: multiline, expressa que a busca deve ocorrer em todas as linhas em um texto.
Character Class
Quando é passado caracteres entre colchetes o regex é definido como uma classe e o conteúdo entre colchetes deixa de ser tratado como sequência literal.
- Um ou outro: quaisquer uns dos caracteres passados entre colchetes serão retornados na busca.
Podem ser combinados dentro de uma expressão para buscar por retornos possíveis. Ex:
- Intervalo de busca: caracteres separados por hífen dentro de colchetes definem o intervalo utilizado para a busca. [A-Z] irá buscar os caracteres de A a Z, [0-9] busca de 0 até 9, tendo como referência a tabela unicode.
- Negação: o acento circunflexo nega o que estiver após este. No exemplo abaixo, será substituído somente o que não estiver entre "A" e "Q".
Caracteres especiais
Entre colchetes se tornam literais mas podem ser escapados com a utilização de barra invertida (\). Fora dos colchetes, para não os utilizar com suas funções especiais, utiliza-se a barra invertida também.
- + (mais): retorna uma ou mais ocorrências de um caractere passado antes deste sinal;
- * (asterisco): retorna quando existir nenhuma ou mais ocorrências;
- ? (interrogação): o caractere antes deste se torna opcional, podendo retornar com ou sem a existência do referido caractere;
- ^ (acento circunflexo): negação quando entre colchetes e âncora de início de linha caso contrário, significando que o retorno, passado após o sinal, deve estar no início da linha;
- $ (cifrão): retorna a cadeia de caracteres passada antes deste quando estiver no final da linha, oposto ao acento circunflexo;
- \ (barra invertida): escapa caracteres;
- .(ponto): seleciona qualquer caractere exceto quebra de linhas;
- [ ] (colchetes): utilizado para especificar classes de regex;
- { } (chaves): utilizado para especificar intervalos;
- ( ) (parênteses): utilizado para captura e memorização de buscas
- | (barra vertical): retorna um ou outra cadeia de caracteres, passadas antes e depois desta barra; e
- / (barra): utilizado para abertura e fechamento da regex.
Word
O "\w" pode ser utilizado para selecionar todos os caracteres alfanuméricos e underline igual a [A-Za-z0-9_]. "\W" (maiúsculo) é a negação deste. Ex:
Digit
O "\d" irá é utilizado para a seleção de dígitos e assim como word, sua negação é "\D" qualquer dígito.
Whitespace
O "\s" seleciona espaços em branco, tendo como negação "\S".
Quantificadores
Caracteres que requeiram busca com repetição podem ter o quantitativo da repetição entre chaves após o caractere. Quantidade mínima e máxima também podem ser especificadas separados por vírgula entre as chaves (sem espaços).
Word Boundary
O sinal "\b" indica uma seleção com início e fim de não caracteres, tal como espaço por exemplo. Sua negação é "\B".
Outros seletores
- Line feed: "\n", seleciona o final de uma linha que contenha uma quebra;
- Tab: "\t", seleciona tabs; e
- Unicode: "\u", seleciona símbolos através de seu código unicode.
Um site muito bom para testes e análise é o seguinte: https://regexr.com.