87 votes

preg_match en JavaScript?

Est-il possible en JavaScript de faire quelque chose comme preg_match fait en PHP ?

Je voudrais pouvoir obtenir deux nombres de la chaîne:

 var text = 'price[5][68]';
 

en deux variables séparées:

 var productId = 5;
var shopId    = 68;
 

Edit: j'utilise également MooTools si cela peut aider.

137voto

godswearhats Points 904

JavaScript a un RegExp objet qui fait ce que vous voulez. L' String objet a un match() fonction qui va vous aider.

text.match(/price\[(\d+)\]\[(\d+)\]/);

33voto

kander Points 2968
 var text = 'price[5][68]';
var regex = /price\[(\d+)\]\[(\d+)\]/gi;
match = regex.exec(text);
 

match [1] et match [2] contiendront les chiffres que vous recherchez.

24voto

Tracey Turn Points 109
 var thisRegex = new RegExp('\[(\d+)\]\[(\d+)\]');

if(!thisRegex.test(text)){
    alert('fail');
}
 

J'ai trouvé test pour agir plus preg_match car il fournit un retour booléen. Cependant, vous devez déclarer une variable RegExp.

CONSEIL: RegExp ajoute son propre / au début et à la fin, alors ne les passez pas.

6voto

Dan Stocker Points 304

Cela devrait fonctionner:

 var matches = text.match(/\[(\d+)\][(\d+)\]/);
var productId = matches[1];
var shopId = matches[2];
 

4voto

Tim Pietzcker Points 146308
var myregexp = /\[(\d+)\]\[(\d+)\]/;
var match = myregexp.exec(text);
if (match != null) {
    var productId = match[1];
    var shopId = match[2];
} else {
    // no match
}

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