244 votes

Expression régulière pour obtenir une chaîne de caractères entre deux chaînes de caractères en Javascript

J'ai trouvé des messages très similaires, mais je n'arrive pas à trouver mon expression régulière.

J'essaie d'écrire une expression régulière qui renvoie une chaîne qui se trouve entre deux autres chaînes. Par exemple : Je veux obtenir la chaîne qui se trouve entre les chaînes "vache" et "lait".

Ma vache donne toujours du lait

renverrait

"donne toujours"

Voici l'expression que j'ai reconstituée jusqu'à présent :

(?=cow).*(?=milk)

Cependant, cette méthode renvoie la chaîne "la vache donne toujours".

16voto

Chase Oliphant Points 81

Je trouve que les expressions rationnelles sont fastidieuses et prennent beaucoup de temps compte tenu de la syntaxe. Puisque vous utilisez déjà javascript, il est plus facile de faire ce qui suit sans regex :

const text = 'My cow always gives milk'
const start = `cow`;
const end = `milk`;
const middleText = text.split(start)[1].split(end)[0]
console.log(middleText) // prints "always gives"

13voto

thomas Points 439

Vous pouvez utiliser la méthode match() pour extraire une sous-chaîne entre deux chaînes. Essayez le code suivant :

var str = "My cow always gives milk";
var subStr = str.match("cow(.*)milk");
console.log(subStr[1]);

Sortie :

donne toujours

Voir un exemple complet ici : Comment trouver une sous-chaîne entre deux chaînes de caractères ? .

9voto

phil Points 192

J'ai pu obtenir ce dont j'avais besoin en utilisant la solution de Martinho Fernandes ci-dessous. Le code est le suivant :

var test = "My cow always gives milk";

var testRE = test.match("cow(.*)milk");
alert(testRE[1]);

Vous remarquerez que j'alerte la variable testRE sous la forme d'un tableau. C'est parce que testRE est retourné sous forme de tableau, pour une raison quelconque. La sortie de :

My cow always gives milk

Se transforme en :

always gives

5voto

Brandon Points 61

Il suffit d'utiliser l'expression régulière suivante :

(?<=My cow\s).*?(?=\smilk)

3voto

Naresh Kumar Points 155

Si les données se trouvent sur plusieurs lignes, vous devrez peut-être utiliser ce qui suit,

/My cow ([\s\S]*)milk/gm

My cow always gives 
milk

Exemple Regex 101

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