54 votes

Javascript Regexp - Correspondance des caractères après une certaine phrase

Je me demandais comment utiliser une regexp pour faire correspondre une phrase qui vient après une certaine correspondance. Par exemple :

var phrase = "yesthisismyphrase=thisiswhatIwantmatched";
var match = /phrase=.*/;

Cela correspondra à la phrase= à la fin de la chaîne, mais est-il possible d'obtenir tout ce qui se trouve après le phrase= sans avoir à modifier une chaîne de caractères ?

79voto

DVK Points 63282

Vous utilisez groupes de capture (indiqués entre parenthèses).

Lorsque vous exécutez la regex via la fonction match ou exec, celle-ci renvoie un tableau composé des sous-chaînes capturées par les groupes de capture. Vous pouvez alors accéder à ce qui a été capturé via ce tableau. Par exemple :

var phrase = "yesthisismyphrase=thisiswhatIwantmatched"; 
var myRegexp = /phrase=(.*)/;
var match = myRegexp.exec(phrase);
alert(match[1]);

o

var arr = phrase.match(/phrase=(.*)/);
if (arr != null) { // Did it match?
    alert(arr[1]);
}

10 votes

N'y a-t-il pas un moyen d'éviter d'utiliser cette match[1] ?

17voto

thejh Points 20901
phrase.match(/phrase=(.*)/)[1]

renvoie à

"thisiswhatIwantmatched"

Les parenthèses spécifient un groupe de capture. Le contenu des groupes de capture est placé dans le tableau résultant, en commençant par 1 (0 est la correspondance complète).

4 votes

Il est important de réaliser que le .match renvoie à null si la correspondance échoue, donc tester cela avant d'essayer d'obtenir le premier index est une bonne idée. De plus, si vous avez plus d'une phase dans cette chaîne clé=valeur, vous pouvez changer la regex en /phrase=(.*?)(;|$)/ où ; est le délimiteur. De plus, vous pourriez abstraire ceci avec une méthode utilisant le constructeur RegEx...

6voto

AmerllicA Points 1

Ce n'est pas si difficile, il suffit de supposer que votre contexte est :

const context = "https://example.com/pa/GIx89GdmkABJEAAA+AAAA";

Et nous voulons avoir le modèle après pa/ alors utilisez ce code :

const pattern = context.match(/pa\/(.*)/)[1];

Le premier point comprend pa/ mais pour le groupement, le deuxième élément est sans pa/ vous pouvez les utiliser comme bon vous semble.

0voto

Bao Mai Points 3

Essayons ceci, j'espère que ça marchera

var p = /\b([\w|\W]+)\1+(\=)([\w|\W]+)\1+\b/;
console.log(p.test('case1 or AA=AA ilkjoi'));
console.log(p.test('case2 or AA=AB'));
console.log(p.test('case3 or 12=14'));

0voto

AlexNikonov Points 30

Si vous voulez obtenir la valeur après la regex excluant la phrase de test, utilisez ceci : /(?:phrase=)(.*)/

le résultat sera

0: "phrase=thisiswhatIwantmatched" //full match
1: "thisiswhatIwantmatched" //matching group

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X