| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/RegExp | [Back] [Original] |
Get to know MDN better
Esta pgina foi traduzida do ingls pela comunidade. Saiba mais e junte-se comunidade MDN Web Docs.
This feature is well established and works across many devices and browser versions. Its been available across browsers since julho de 2015.
* Some parts of this feature may have varying levels of support.
O construtor RegExp cria um objeto de expresso regular para realizar uma correspondncia de texto com um padro.
Para uma introduo expresses regulares, leia o captulo de Expresses Regulares no Guia de JavaScript.
Notaes literais e de construtores so possveis:
/padro/flags new RegExp(padro[, flags]) RegExp(padro[, flags])
padroO texto da expresso regular, ou como em ES5, outro objeto RegExp. Os padres podem incluir caracteres especiais para correspondencia em um intervalo maior de valores do que uma string literal.
flagsSe especificado, flagsindica os marcadores que podem ser adicionados, ou se um objeto suficiente para o padro, os valores de flags sero substituidos por qualquer uma das flags de objetos. O valor de flags uma string contendo qualquer combinao dos seguintes valores:
gcorresponder globalmente; acha todas as correspondncias em vez de parar aps achar a primeira
iignorar maisc./minsc.; Se a flag u estiver ativa, deve ser utilizado o Unicode case folding
mmultilinha; trata caracteres de incio e fim (^ e $) ao operar sobre mltiplas linhas (ou seja, corresponder o incio ou fim de cada linha (delimitado por \n ou \r), e no apenas o comeo ou fim de toda a string de entrada)
u unicode; trata o padro como uma sequncia de cdigo unicode
y aderente; corresponde apenas pelo index indicado pela propriedade lastIndex dessa expresso regular na string alvo (e no tenta corresponder de qualquer indexes posteriores).
H dois modos de criar um objeto RegExp: uma notao literal e um construtor. Para indicar strings, os parmetros para a notao literal no usam aspas, enquanto os parmetros para a funo do construtor usam. Ento, as seguintes expresses criam a mesma expresso regular:
/ab+c/i;
new RegExp("ab+c", "i");
A notao literal compila a expresso regular em tempo de execuo. Use a notao literal quando a expresso regular permanecer constante. Por exemplo, se voc usar a notao literal para construir a expresso regular usada em um loop, a expresso regular no ser recompilada a cada iterao
O construtor do objeto da expresso regular, por exemplo, new RegExp('ab+c'), fornece uma compilao em tempo de execuo da expresso regular. Use a funo construtora quando voc sabe que o padro da expresso regular ser mudado, ou voc no sabe o padro e o est recebendo de outra fonte, como uma entrada do usurio.
Comeando com ECMAScript 6, new RegExp(/ab+c/, 'i'), deixou de lanar um TypeError ("can't supply flags quando constructing one RegExp from another") quando o primeiro argumento um RegExp e o segundo argumento flags est presente. Uma nova RegExp dos argumentos criada ao invs disso.
Quando se usa a funo construtora, as regras de escapar em uma string (preceder caracteres especiais com \ quando includos na string) so necessrias. Por exemplo, as declaraes a seguir so equivalentes:
var re = /\w+/;
var re = new RegExp("\\w+");
| Classes de Caracteres | |
|---|---|
| Caractere | Significado |
. |
(O ponto) corresponde um nico caracter qualquer exceto os
caracteres de nova linha:
Note que a flag multilinha
Por exemplo, |
\d |
Corresponde um caractere de dgito no alfabeto basic Latin.
Equivalente
Por exemplo, |
\D |
Corresponde qualquer caractere que no um dgito no alfabeto basic
Latin. Equivalente a
Por exemplo, |
\w |
Corresponde qualquer caractere alfanumrico do alfabeto basic Latin,
incluindo o underline. Equivalente a
Por exemplo, |
\W |
Corresponde qualquer caractere que no um alfanumrico do alfabeto
basic Latin. Equivalente a
Por exemplo, |
\s |
Corresponde um nico caractere de espao em branco, incluindo espao,
tabulao (tab), quebra de pgina, nova linha (LF) e outros espaos
Unicode. Equivalente a
Por exemplo, |
\S |
Corresponde um nico caractere que no seja um espao em branco.
Equivalente a
Por exemplo, |
\t |
Corresponde uma tabulao. |
\r |
Corresponde uma quebra de linha. |
\n |
Corresponde uma nova linha. |
\v |
Corresponde uma tabulao vertical. |
\f |
Corresponde uma quebra de pgina. |
[\b] |
Corresponde um caracter backspace. (No confundir com \b)
|
\0 |
Corresponde um caractere NUL. No coloque outro dgito seguinte a esse. |
\cX
|
Onde
Por exemplo, |
\xhh
|
Corresponde o caractere com o cdigo hh (dois
dgitos hexadecimais).
|
\uhhhh
|
Corresponde o caractere com o valor Unicode
hhhh (quatro dgitos hexadecimais).
|
\ |
Para caracteres que so geralmente tratados literalmente, indica que o prximo caractere especial e no deve ser interpretado literalmente.
Por exemplo, ou Para caracteres que so geralmente tratados especialmente, indica que o prximo caractere no especial e deve ser interpretado literalmente.
Por exemplo, "*" um caractere especial que significa 0 ou mais
ocorrncias do caractere precedente devem ser correspondidas; por
exemplo, |
| Conjuntos de Caracteres | |
| Caractere | Significado |
[xyz] |
Um conjunto de caracteres. Corresponde qualquer um dos caracteres cercados. Voc pode especificar uma extenso de caracteres usando um hfen.
Por exemplo, |
[^xyz] |
Um conjunto de caracteres negativo ou complementado. Isto , corresponde qualquer coisa que no esteja cercada nos colchetes. Voc pode especificar uma extenso de caracteres usando um hfen.
Por exemplo, |
| Limites | |
| Caractere | Significado |
^ |
Corresponde o incio de uma entrada. Se a flag multilinha utilizada, tambm corresponde imediatamente aps um caractere de quebra de linha.
Por exemplo, |
$ |
Corresponde o fim de uma entrada. Se a flag multilinha utilizada, tambm corresponde imediatamente antes de um caractere de quebra de linha.
Por exemplo, |
\b |
Corresponde um limite de palavra de largura zero, como entre uma letra
e um espao. (No confundir com
Por exemplo, |
\B |
Corresponde um limite de uma no palavra de largura zero, como entre duas letras ou entre dois espaos.
Por exemplo, |
| Agrupamentos e back references | |
| Caractere | Significado |
(x) |
Corresponde
Por exemplo, Grupos de captura tm uma falta na performance. Se voc no necessita que a substring correspondida seja chamada novamente, prefira parnteses de no-captura (veja mais abaixo). |
\n
|
Onde
Por exemplo, |
(?:x) |
Corresponde x mas no memoriza a correspondncia.
Esses so chamados parnteses de no-captura. A substring correspondida
no pode ser chamada novamente dos elementos do array resultante
[1], ..., [n] ou das propriedades predefinidas do objeto
RegExp $1, ..., $9.
|
| Quantificadores | |
| Caractere | Significado |
x*
|
Corresponde o item precedente x zero ou mais vezes.
Por exemplo,
Note que no caso acima, o nico caractere a ser selecionado "o",
pois ele o caractere imediatamente anterior ao asterisco e no h
qualquer operador de agrupamento que indique que mais caracteres
deveriam ser submetidos repetio. Se quisssemos selecionar a
ocorrncia sequencial da palavra completa "blah", por exemplo,
poderamos utilizar algum agrupamento como |
x+
|
Corresponde o item precedente x uma ou mais vezes.
Equivalente a
Por exemplo, |
x?
|
Corresponde o item precedente x nenhuma ou uma vez.
Por exemplo,
If used imediatamente after qualquer dos quantifiers
Also used em lookahead assertions, described under |
x(?=y)
|
Corresponde x apenas se x
seguido por y. Por exemplo, /Jack(?=Sprat)/ corresponde "Jack" apenas
se for seguido por "Sprat".
/Jack(?=Sprat|Frost)/ corresponde "Jack" apenas se for
seguido por "Sprat" ou "Frost". Porm, nem "Sprat" nem "Frost" so
partes do resultado da correspondncia.
|
x(?!y)
|
Corresponde
|
x|y
|
Corresponde
Por exemplo,
Entretanto, a primeira expresso tem preferncia. Se uma string fosse
corresponder s duas expresses, ela vai corresponder que aparece do
lado esquerdo do operador |
x{n}
|
Onde
Por exemplo, |
x{n,}
|
Onde
Por exemplo, |
x{n,m}
|
Onde
Por exemplo, importante perceber que no ltimo caso a correspondncia no inclui o ltimo "o" de "brigadeirooooo". Isso se deve ao fato do operador quantificador ter definido o nmero mximo de ocorrncias como 4, ignorando a quinta repetio do caractere. |
|
|
Operadores non-greedy ou lazy (no-gulosos ou
preguiosos)
No exemplo
J a expresso regular
Em outro exemplo com mais aplicao prtica, digamos que se quer
corresponder todos os termos que ficam entre aspas em um texto. Se
fizssemos simplesmente a regex |
RegExpPermite a adio de propriedades a todos os objetos.
RegExp.lengthO valor of RegExp.length 2.
O objeto global RegExp no possui mtodos prprios, no entanto, herda alguns mtodos atravs da cadeia de prototype.
O seguinte script usa o mtodo replace() da instncia de String para casar o nome no format nome sobrenome e produzir no formato sobrenome, nome. No texto substituto, o script usa $1 e $2 para indicar os respectivos parnteses de casamento no padro da expresso regular.
var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1");
console.log(newstr);
Isto retornar "Smith, John".
O final de linha padro depende da plataforma utilizada (Unix, Windows, etc.). A diviso(split) de linha fornecida neste exemplo funciona com todas as plataformas.
var text = "Um texto\nE mais um pouco\r\nE ainda mais\rEsse o fim";
var lines = text.split(/\r\n|\r|\n/);
console.log(lines); // prints [ 'Um texto', 'E mais um pouco', 'E ainda mais', 'Esse o fim' ]
Note que a ordem dos padres na expresso regular importa.
var s = "Please yes\nmake my day!";
s.match(/yes.*day/);
// Retorna null
s.match(/yes[^]*day/);
// Retorna'yes\nmake my day'
Este exemplo mostra como utilizar a sticky flag em expresses regulares.
var text = "First line\nSecond line";
var regex = /(\S+) line\n?/y;
var match = regex.exec(text);
console.log(match[1]); // prints 'First'
console.log(regex.lastIndex); // prints '11'
var match2 = regex.exec(text);
console.log(match2[1]); // prints 'Second'
console.log(regex.lastIndex); // prints '22'
var match3 = regex.exec(text);
console.log(match3 === null); // prints 'true'
One can test at run-time whether o sticky flag supported, using try { } catch { }. Para this, either an eval() expression ou o RegExp(regex-string, flags-string) syntax must be used (since o /regex/flags notation processed at compile-time, so throws an exception before o catch block encountered). Por exemplo:
var supports_sticky;
try {
RegExp("", "y");
supports_sticky = true;
} catch (e) {
supports_sticky = false;
}
console.log(supports_sticky); // prints 'true'
As mentioned above, \w ou \W only corresponde ASCII based caracteres; por exemplo, "a" to "z", "A" to "Z", "0" to "9" e "_". To match caracteres from other languages such como Cyrillic ou Hebrew, use \uhhhh, onde "hhhh" o caractere's Unicode valor em hexadecimal. This exemplo demonstrates how one can separate out Unicode caracteres from uma palavra.
var text = " text ";
var regex = /[\u0400-\u04FF]+/g;
var match = regex.exec(text);
console.log(match[0]); // prints ''
console.log(regex.lastIndex); // prints '7'
var match2 = regex.exec(text);
console.log(match2[0]); // prints '' [no print 'text']
console.log(regex.lastIndex); // prints '15'
// e assim vai
Here's an external resource para getting o complete Unicode block range para different scripts: Regexp-unicode-block.
var url = "http://xxx.domain.com";
console.log(/[^.]+/.exec(url)[0].substr(7)); // prints 'xxx'
| Specification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-regexp-regular-expression-objects |
This page was last modified on 22 de mai. de 2026 by MDN contributors.
RegExpObject/FunctionObject.prototype.__defineGetter__()Object.prototype.__defineSetter__()Object.prototype.__lookupGetter__()Object.prototype.__lookupSetter__()Object.prototype.hasOwnProperty()Object.prototype.isPrototypeOf()Object.prototype.propertyIsEnumerable()Object.prototype.toLocaleString()Object.prototype.toString()Object.prototype.valueOf()Your blueprint for a better internet.
Portions of this content are 19982026 by individual mozilla.org contributors. Content available under a Creative Commons license.
| Web Proxy Viewer | New URL | Original Page |