Eu estou tentando escrever uma expressão regular que retorna uma seqüência de caracteres entre parênteses. Por exemplo: quero obter a string que reside entre as strings "(" e ")"
I expect five hundred dollars ($500).
retornaria
$500
Expressão regular encontrada para obter uma string entre duas strings em Javascript
Mas eu sou novo com regex. Não sei como usar '(', ')' no regexp
javascript
regex
string
Okky
fonte
fonte
var regExp = /\(\$([^)]+)\)/;
Respostas:
Você precisa criar um conjunto de
\
parênteses de escape (com ) (que correspondem aos parênteses) e um grupo de parênteses regulares que criam seu grupo de captura:Demolir:
\(
: coincide com parênteses de abertura(
: começa a capturar o grupo[^)]+
: corresponde a um ou mais)
caracteres não)
: grupo final de captura\)
: coincidir com parênteses de fechamentoAqui está uma explicação visual sobre o RegExplained
fonte
/g
bandeira global não funcionará conforme o esperado.Tente manipulação de string:
ou regex ( que é um pouco lento em comparação com o acima )
fonte
Portado resposta de Mr_Green a um estilo de programação funcional para evitar o uso de variáveis globais temporários.
fonte
Solução simples
Nota : esta solução pode ser usada para strings que possuem apenas "(" e ")" strings únicos nesta questão.
Demonstração online (jsfiddle)
fonte
Por apenas dígitos após um sinal de moeda:
\(.+\s*\d+\s*\)
deve funcionarOu
\(.+\)
para qualquer coisa entre parêntesesfonte
)
aparecer mais tarde na sequência, comoI expect five hundred dollars ($500). (but I'm going to pay).
a ganância do+
capturará muito mais.($500)
e(but I'm going to pay)
ser correspondido, mas em duas partidas separadas, em vez de ser considerado um único item correspondente? Desde já, obrigado!Para corresponder uma substring entre parênteses, excluindo os parênteses internos, você pode usar
padronizar. Veja a demonstração do regex .
Em JavaScript, use-o como
Detalhes do padrão
\(
- um(
char([^()]*)
- Capturando o grupo 1: uma classe de caractere negado que corresponde a 0 ou mais caracteres diferentes de(
e)
\)
- um)
char.Para obter toda a correspondência, pegue o valor do Grupo 0, se precisar do texto entre parênteses, pegue o valor do Grupo 1.
Demonstração de código JavaScript mais atualizada (usando
matchAll
):Demonstração de código JavaScript herdado (compatível com ES5):
Mostrar snippet de código
fonte
()
e seu conteúdo, mesmo quando lado a lado()()
.matchAll
demonstração de código JavaScript baseada.fonte
Alternativo:
É possível substituir os suportes por quadrados ou cacheados, se você precisar
fonte
Corresponderá ao primeiro número começando com $ e seguido por ')'. ')' não fará parte da partida. O código alerta com a primeira correspondência.
Este código alerta com todas as correspondências.
Referências:
procure por "? = n" http://www.w3schools.com/jsref/jsref_obj_regexp.asp
procure por "x (? = y)" https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp
fonte