web-dev-qa-db-fra.com

preg_match en JavaScript?

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

J'aimerais pouvoir obtenir deux nombres d'une chaîne:

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

en deux variables séparées:

var productId = 5;
var shopId    = 68;

Edit: J'utilise aussi MooTools si cela peut aider.

67
hsz

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

var matches = text.match(/price\[(\d+)\]\[(\d+)\]/);
103
godswearhats
var text = 'price[5][68]';
var regex = /price\[(\d+)\]\[(\d+)\]/gi;
match = regex.exec(text);

match [1] et match [2] contiendront les numéros que vous recherchez.

29
kander
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 sa propre/au début et à la fin, alors ne les passez pas.

20
Tracey Turn

Cela devrait fonctionner:

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