2010-07-25 6 views
1

J'ai une chaîne qui contient une partie non variable, une variable numnber et une autre partie non variable. Je veux user replace(), pour changer seulement la partie variable dans une valeur qu'un utilisateur choisit. Je suis un noob à javascript, et même un plus grand noob dans les expressions reg, donc désolé si c'est quelque chose de trivial.Javascript combinant une expression reg et une chaîne

Quoi qu'il en soit, j'ai une chaîne comme ceci:

"first nonvar part: "+any_integer+"last nonvar part". 

je voudrais utiliser regexp pour remplacer any_integer. Puis-je combiner d'une manière ou d'une autre la chaîne et l'expression régulière pour faire correspondre la chaîne par ses parties non variablement avec un nombre inconnu entre?

donc je peux utiliser:

replace("first nonvar part: "+any_number+"last nonvar part","first nonvar part: "+user_input+"last nonvar part") 

ou quelque chose de similaire.

Un grand merci

+0

Pouvez-vous donner un exemple réel de la chaîne et de la valeur que vous voulez remplacer et insérer? Si le code ressemble à ce que vous avez présenté, la réponse ** est ** '" première partie nonvar: "+ user_input +" dernière partie nonvar "', ce qui ne peut pas être le cas. – Kobi

+0

@Kobi: Oui, à première vue "nonvar1" + userinput + "nonvar2" ressemble à une solution, mais j'ai un problème où je dois accéder à différentes parties de html en les enregistrant comme des chaînes, et je dois mettre à jour tous eux une fois que le changement est fait. –

Répondre

1
var str = original.replace(/(non var)\d(non var)/​​​​​​​​​​​​​​​​​​​​​, "$1" + input + "$2"); 

Remplacer les "non vars" avec vos non-variables.

3

Si les parties de la chaîne non variant ne contient pas de chiffres, il vous suffit de spécifier les chiffres dans l'expression:

str = str.replace(/\d+/, replacement); 

Si vous voulez créer l'expression régulière par des chaînes concaténer, vous utilisez l'expression régulière constructeur:

var first = "first nonvar part: "; 
var last = "last nonvar part"; 
var re = new Regexp("^" + first + "\\d+" + last + "$"); 
str = str.replace(re, replacement); 

Notez que si les chaînes contiennent des caractères non variante qui a une signification particulière dans une expression régulière, ils doivent être échappé.

+1

Dans une chaîne qui devrait être '" \\ d + "'. JavaScript ignore généralement les échappements non définis, il en reste donc avec 'd +'. – Kobi

+0

@Kobi: Oui, bien sûr. J'ai corrigé le code. – Guffa

Questions connexes