new Regex(pattern [, options])
Este é o objeto que representa uma expressão regular. Ele abstrai um regex pattern, com isso, este objeto possui métodos para checar o casamento do padrão com uma string qualquer. Possui também uma série de métodos acessórios para obter informações adicionais ou auxiliar no casamento entre padrão e string pesquisada. Esta API é diferente da classe global RegExp especificada pela linguagem JavaScript.
Para fins de compatibilidade, este construtor também aceita a seguinte assinatura:
const regex = new Regex(pattern, opt_sensitivity, opt_syntax)
.
Parameters:
Name | Type | Argument | Description | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
pattern |
string | Padrão que define o objeto. |
|||||||||||||||||||||
options |
Object |
<optional> |
Opções para a construção da expressão regular. Properties
|
Examples
const Regex = require('@nginstack/engine/lib/regexp/Regex'); const regex = new Regex("(\\d+)(?:\\s*)(cm|inch)");
const Regex = require('@nginstack/engine/lib/regexp/Regex'); const regex = new Regex("*.exe", { patternSyntax: Regex.SYNTAX_WILDCARD, ignoreCase: true });
const Regex = require('@nginstack/engine/lib/regexp/Regex'); const regex = new Regex("^\\d$", { patternSyntax: Regex.SYNTAX_REG_EXP3, dotAll: true, multiline: true });
Members
-
<static, constant> CARET_AT_OFFSET :number
-
A propriedade CaretMode define os diferentes significados do acento circunflexo (^) em uma expressão regular. Esta constante define um modo que a propriedade CaretMode pode assumir.
Neste modo, o acento circunflexo corresponde ao start off-set da pesquisa.
Type:
- number
- See:
-
<static, constant> CARET_AT_ZERO :number
-
A propriedade CaretMode define os diferentes significados do acento circunflexo (^) em uma expressão regular. Esta constante define um modo que a propriedade CaretMode pode assumir.
Neste modo, o acento circunflexo corresponde ao índice zero na string pesquisada.
Type:
- number
- See:
-
<static, constant> CARET_WONT_MATCH :number
-
A propriedade CaretMode define os diferentes significados do acento circunflexo (^) em uma expressão regular. Esta constante define um modo que a propriedade CaretMode pode assumir.
Neste modo, não assume nenhuma conotação.
Type:
- number
- See:
-
<static, constant> CASE_INSENSITIVE :number
-
Constante a ser usada na chamada de métodos da API para indicar que o comportamento do método é case insensitive.
Type:
- number
- See:
-
<static, constant> CASE_SENSITIVE :number
-
Constante a ser usada na chamada de métodos da API para indicar que o comportamento do método é case sensitive.
Type:
- number
- See:
-
<static, constant> SYNTAX_FIXED_STRING :number
-
Esta constante deve ser utilizada para definir qual regra de interpretação será utilizada pelo objeto.
Para este modo, os meta-caracteres não serão interpretados.
Type:
- number
- See:
-
<static, constant> SYNTAX_REG_EXP :number
-
Esta constante deve ser utilizada para definir qual regra de interpretação será utilizada pelo objeto.
Para este modo, a sintaxe utilizada é Perl-like.
Type:
- number
- See:
-
<static, constant> SYNTAX_REG_EXP2 :number
-
Esta constante deve ser utilizada para definir qual regra de interpretação será utilizada pelo objeto.
Esta sintaxe é similar a SYNTAX_REG_EXP, mas com quantificadores vorazes. Este é o padrão.
Type:
- number
- See:
-
<static, constant> SYNTAX_REG_EXP3 :number
-
Esta constante deve ser utilizada para definir qual regra de interpretação será utilizada pelo objeto.
Esta sintaxe é similar a SYNTAX_REG_EXP, mas com opções de construção mais modernas, suportando as flags
multiline
edotAll
, e padrões com look behind (exemplos:(?<=y)x
e(?<!y)x
), quantificadores lazy (exemplos:.*?
e.+?
), e capturas nomeadas (exemplo:(?<name>\\w+) xyz \\k<name>
).Como esta sintaxe suporta padrões com quantificadores lazy,
setMinimal(true)
tem o efeito de inverter a voracidade dos quantificadores.Esta sintaxe não suporta caret mode no método
indexIn
. Qualquer mudança de comportamento do caret é suportada apenas pela flag multiline.Type:
- number
- See:
-
- #setMinimal
- #multiline
- #dotAll
- indexIn
- #patternSyntax
-
<static, constant> SYNTAX_W3C_XML_SCHEMA_11 :number
-
Esta constante deve ser utilizada para definir qual regra de interpretação será utilizada pelo objeto.
Nesta caso, o padrão é uma expressão regular como definido pela especificação W3C Schema XML 1.1.
Type:
- number
- See:
-
<static, constant> SYNTAX_WILDCARD :number
-
Esta constante deve ser utilizada para definir qual regra de interpretação será utilizada pelo objeto.
Para este modo, é fornecida uma sintaxe padrão simples, semelhante ao utilizado por shells (interpretadores de comando) para "file glob".
Type:
- number
- See:
-
<static, constant> SYNTAX_WILDCARD_UNIX :number
-
Esta constante deve ser utilizada para definir qual regra de interpretação será utilizada pelo objeto.
Esta sintaxe é similar a SYNTAX_WILDCARD, mas com o comportamento de um UNIX shell.
Type:
- number
- See:
-
caseSensitivity :number
-
Valor da propriedade que define se o casamento deve ser case sensitive ou insensitive.
Type:
- number
- See:
-
- Regex.CASE_INSENSITIVE
- Regex.CASE_SENSITIVE
-
dotAll :boolean
-
Flag que permite que "." efetue casamento com saltos de linha. Essa flag deve ser usada exclusivamente com a sintaxe SYNTAX_REG_EXP3. Para as outras sintaxes o "." sempre efetua o casamento com saltos de linha.
Type:
- boolean
- See:
-
multiline :boolean
-
Flag que permite que "^" e "$" também efetuem casamento com saltos de linha. Essa flag deve ser usada exclusivamente com a sintaxe SYNTAX_REG_EXP3, pois não é suportada por outras sintaxes.
Type:
- boolean
- See:
-
pattern :string
-
String de caracteres do padrão da expressão regular. Note que o padrão retornado é afetado pela propriedade PatternSyntax do objeto.
Type:
- string
-
<readonly> patternSyntax :number
-
Sintaxe que está em uso pelo objeto Regex (uma das estáticas SYNTAX_*). O objeto é criado com a sintaxe SYNTAX_REG_EXP2 por padrão.
Type:
- number
- See:
Methods
-
<static> escape(str)
-
Escapa todos os caracteres de str de modo que não tenham nenhum significado especial ao serem usados como padrão em uma expressão regular. Na prática, todos os caracteres são escapados exceto A-Z, a-z, 0-9 e _ (underscore).
Parameters:
Name Type Description str
string string que se quer escapar.
Returns:
string escapada.
- Type
- string
Example
s1 = Regex.escape("bingo"); // s1 === "bingo" s2 = Regex.escape("f(x)"); // s2 === "f\\(x\\)"
-
cap(matchedIndex)
-
Retorna os sub-itens encontrados de acordo com o padrão. O índice 0 corresponde ao casamento com toda a expressão, o índice 1 corresponde ao casamento com a sub-expressão que está dentro do primeiro par de parênteses, o índice 2 corresponde a sub-expressão presente dentro do segundo par de parênteses e assim por diante.
Parameters:
Name Type Description matchedIndex
number - See:
Returns:
Retorna uma string correspondente ao casamento do índice informado.
- Type
- string
Example
const Regex = require('@nginstack/engine/lib/regexp/Regex'); const rx = new Regex("(\\d+)(?:\\s*)(cm|inch)"); const pos = rx.indexIn("Length: 189cm"); if (pos > -1) { const value = rx.cap(1); // "189" const unit = rx.cap(2); // "cm" }
-
captureCount()
-
Retorna o número de capturas conseguidas a partir da expressão regular.
Returns:
Número de capturas
- Type
- number
Example
const Regex = require('@nginstack/engine/lib/regexp/Regex'); const rx = new Regex("(\\d+)(?:\\s*)(cm|inch)"); rx.indexIn("Length: 189cm"); const results = []; for (var i = 0; i < rx.captureCount(); ++i) { results.push(rx.cap(i)) }
-
capturedTexts()
-
Retorna uma lista de strings, onde cada elemento é uma captura.
A primeira string na lista é a sequência de todo o casamento. Cada elemento subsequente da lista contém uma string que combina com uma subexpressão (captura) da expressão regular.
Returns:
Textos capturados.
- Type
- Array.<string>
Example
const Regex = require('@nginstack/engine/lib/regexp/Regex'); const rx = new Regex("(\\ d +) (\\ s *) (cm | polegada (es))?"); const pos = rx.indexIn("Duração: 36 polegadas"); const list = rx.capturedTexts(); // A lista é agora ("36 polegadas", "36", "", "polegadas", "es")
-
exactMatch(str)
-
Retorna true se str é correspondido exatamente por esta expressão regular, caso contrário retorna false.
Observação: sintaxes anteriores a SYNTAX_REG_EXP3 definem
matchedLength()
,capturedTexts()
epos()
, mesmo quando não há casamento exato, para indicar se houve casamento parcial. Recomendamos que esses métodos não sejam utilizados após umexactMatch()
malsucedido, pois esta classe não suporta a funcionalidade de casamento parcial, e seu uso pode trazer resultados indesejados.Parameters:
Name Type Description str
string Expressão para tentar o casamento com o Regex.
Returns:
- Type
- boolean
-
getErrorString()
-
Retorna uma string que explica por que um padrão regexp é inválido, caso contrário retorna "no error occurred".
Returns:
Descrição do erro.
- Type
- string
-
indexIn(str [, offSet] [, caretMode])
-
Este método tentará encontrar uma correspondência em str a partir da posição offSet. Se offSet for negativo, -1 indicará o último caractere, -2 o penúltimo, e assim por diante.
Parameters:
Name Type Argument Description str
string String onde será buscado o padrão.
offSet
number <optional>
deslocamento em str a partir do início. O casamento tentará ser realizado no conteúdo após o deslocamento.
caretMode
number <optional>
Deve ser utilizada uma das constantes estáticas CARET_* para definir este parâmetro. Define o significado de caret (^), podendo corresponder à posição offset, à posição 0, ou não ter significado. A sintaxe SYNTAX_REG_EXP3 não suporta mudança de comportamento do caret por meio desse parâmetro.
Returns:
Retorna a posição do primeiro casamento, ou -1 se não houve casamento.
- Type
- number
-
isEmpty()
-
Retorna true se a string padrão é vazia, caso contrário retorna false.
Se você chamar
exactMatch()
com um padrão vazio, com uma string vazia em seu parâmetro, retornará true, caso contrário retornará falso, uma vez que ele opera sobre toda a string.Se você chamar
indexIn()
com um padrão vazio em qualquer cadeia ele irá retornar o offset (0 por padrão), porque o padrão de vazio corresponde ao "vazio" no início da string. Neste caso o valor retornado pormatchedLength()
será 0.Returns:
- Type
- boolean
-
isMinimal()
-
Retorna true se o minimal matching estiver ativado, caso contrário retorna false.
Returns:
- Type
- boolean
-
isValid()
-
Retorna verdadeiro se a expressão regular é válida, caso contrário retorna false.
O padrão "[az" é um exemplo de um padrão inválido, uma vez que carece de um colchete final. Note que a validade de uma regexp também pode depender da configuração de sintaxe, por exemplo "*.html" é válido para a sintaxe SYNTAX_WILDCARD, mas é inválido para SYNTAX_REG_EXP.
- See:
Returns:
- Type
- boolean
-
matchedLength()
-
Retorna o comprimento da string do último casamento, ou -1 se não houve casamento. Esta função deve ser executada apenas após uma chamada para
indexIn()
.- See:
Returns:
- Type
- number
-
pos(n)
-
Retorna a posição da enésima captura na string pesquisada. Se n é 0 (o padrão),
pos()
retorna a posição do casamento completo.Parameters:
Name Type Description n
number Posição da captura na string do padrão.
Returns:
posição na string pesquisada da captura informada no parâmetro n.
- Type
- number
Example
const Regex = require('@nginstack/engine/lib/regexp/Regex'); const rx = new Regex("/([a-z]+)/([a-z]+)"); rx.indexIn( "Output /dev/null" ); // retorna 7 (posição do /dev/null) rx.pos(0); // retorna 7 (posição do /dev/null) rx.pos(1); // retorna 8 (posição de dev) rx.pos(2); // retorna 12 (posição de null)
-
setMinimal(isMinimal)
-
Habilita ou desabilita o minimal matching. Se o
isMinimal
é falso, o matching será agressivo (máxima), que é o padrão.Como a sintaxe SYNTAX_REG_EXP3 suporta padrões com quantificadores lazy,
setMinimal(true)
tem o efeito de inverter a voracidade dos quantificadores nesta sintaxe.Parameters:
Name Type Description isMinimal
boolean