2009-08-11 7 views
1

Comment puis-je remplacer le nombre entre parenthèses pour les chaînes ne correspondant pas au mot "Champ". Ainsi, le nombre dans 'SomethingElse' et 'SomethingMore' pourrait être remplacé par une nouvelle valeur, mais toute valeur entre parenthèses sur le côté droit du terme 'Field' ne serait pas touchée. Notez que le mot "Field" restera toujours le même, donc il peut être référencé comme une chaîne magique dans la regex.Remplacer la valeur entre crochets à l'aide de RegEx uniquement où ne correspond pas

Field[50].SomethingElse[30] 
Field[50].SomethingMore[30] 

Merci. PS. Utiliser JavaScript.

+0

Les cordes seront-elles toujours dans le format que vous avez ci-dessus? c'est-à-dire le support que vous voulez changer toujours à la fin de la chaîne? – Salgar

+0

No Salgar, pourrait être au milieu d'une chaîne. – GONeale

Répondre

1

Essayez

str.replace(/(Field\[[^\]]*\]\.[^\[]*)\[(.*)\]/g, "$1["+value+"]"); 
+0

Merci Eldar, désolé pour le très tard accepter. – GONeale

0

Vous pouvez utiliser « eval » et la manipulation de chaînes, mais si vous devez le faire de cette façon, vous le faites mal.

Stockage du nombre "30" à une variable permet d'être manipulé comme vous avez besoin, puis seulement l'accès "SomethingElse" et "SomethingMore" comme suit:

var n = 30; 
// conditional logic; 

Field[50].SomethingElse[n] 
Field[50].SomethingMore[n] 

Cordialement, Joshua

2
str.replace(/\b((?!Field\[)\w+)\[\d+\]/g, '$1[' + repl + ']'); 
1

str.replace(/(?<!Field)\[([\d]*)\]]/g, '$1['+newnumber+']');

Hope this helps

Questions connexes