J'essaie d'écrire une expression régulière qui renvoie une chaîne entre parenthèses. Par exemple: je veux obtenir la chaîne qui réside entre les chaînes "(" et ")"
I expect five hundred dollars ($500).
retournerais
$500
Expression régulière trouvée pour obtenir une chaîne entre deux chaînes en Javascript
Mais je suis nouveau avec regex. Je ne sais pas comment utiliser '(', ')' dans une expression régulière
javascript
regex
string
Okky
la source
la source
var regExp = /\(\$([^)]+)\)/;
Réponses:
Vous devez créer un ensemble de
\
parenthèses échappées (avec ) (qui correspondent aux parenthèses) et un groupe de parenthèses régulières qui créent votre groupe de capture:Panne:
\(
: correspond à une parenthèse ouvrante(
: commencer la capture du groupe[^)]+
: correspond à un ou plusieurs)
caractères non)
: fin du groupe de capture\)
: faire correspondre les parenthèses fermantesVoici une explication visuelle sur RegExplained
la source
/g
indicateur global ne fonctionnera pas comme prévu.Essayez la manipulation de chaînes:
ou regex ( ce qui est un peu lent par rapport à ce qui précède )
la source
Ported réponse de Mr_Green à un style de programmation fonctionnelle pour éviter l' utilisation de variables globales temporaires.
la source
Solution simple
Remarque : cette solution peut être utilisée pour les chaînes n'ayant qu'un seul "(" et ")" comme chaîne dans cette question.
Démo en ligne (jsfiddle)
la source
Pour juste des chiffres après un signe de devise:
\(.+\s*\d+\s*\)
devrait fonctionnerOu
\(.+\)
pour tout ce qui est entre crochetsla source
)
apparaît plus tard dans la chaîne, commeI expect five hundred dollars ($500). (but I'm going to pay).
la gourmandise du+
, en capturera beaucoup plus.($500)
et(but I'm going to pay)
être mis en correspondance mais en deux matchs séparés plutôt que d'être considéré comme un seul élément correspondant? Merci d'avance!Pour faire correspondre une sous-chaîne entre parenthèses en excluant les parenthèses internes que vous pouvez utiliser
modèle. Voir la démo regex .
En JavaScript, utilisez-le comme
Détails du motif
\(
- un(
omble chevalier([^()]*)
- Groupe de capture 1: une classe de caractères annulée correspondant à 0 ou plusieurs caractères autres que(
et)
\)
- un caractère)
.Pour obtenir la correspondance complète, saisissez la valeur du groupe 0, si vous avez besoin du texte entre parenthèses, saisissez la valeur du groupe 1.
Démonstration de code JavaScript la plus à jour (en utilisant
matchAll
):Démonstration du code JavaScript hérité (compatible ES5):
Afficher l'extrait de code
la source
()
et leur contenu, même côte à côte()()
.matchAll
démo de code JavaScript basée.la source
Alternative:
Il est possible de remplacer les crochets par des crochets carrés ou bouclés si vous avez besoin
la source
Correspondra au premier nombre commençant par un $ et suivi de ')'. ')' ne fera pas partie du match. Le code alerte avec la première correspondance.
Ce code alerte avec toutes les correspondances.
Références:
recherchez "? = n" http://www.w3schools.com/jsref/jsref_obj_regexp.asp
recherchez "x (? = y)" https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp
la source