J'ai une fonction qui modifie le code HTML des éléments sélectionnés ..mot-clé RegExp échapper
$('p').fill('John'); // "John"
..that remplace $value
avec le HTML en cours ..
$('p').fill('Hi $value.') // "Hi John."
..too souvent.
// Should be "The keyword is $value."
$('p').fill('The keyword is \$value.'); // "The keyword is \Hi John.."
J'utilise actuellement ce pour analyser la valeur ..
value.replace(/\$value/gi, item.innerHTML);
..et la solution que je suis venu avec était ..
value.replace(/[^\\]\$value/gi, '$1' + item.innerHTML);
..mais dans certains cas, ça ne marche pas.
// Ends up with "$value John."
$('p').fill('Hi') // Yes, it supports stacking.
.fill('$value John.'); // Should be "Hi John."
J'ai aussi essayé ..
value.replace(/[^\\]?\$value/gi, '$1' + item.innerHTML);
..mais qui a de multiples problèmes.
- Si le caractère non backslash ne correspond pas, alors
$1
n'est pas remplacé, et je ne reste pas bloqué avec cela au hasard inséré. - Si c'est facultatif, il pourrait y avoir encore une barre oblique inverse là, et nous vous retrouver avec une barre oblique inverse au hasard et le
$1
.
Toute idée de comment résoudre ce problème?
Ma question est de savoir comment ignorer '$ value' s'il y a une barre oblique inverse avant. – Kayla
@tyler S'il y a une barre oblique inverse précédente, voulez-vous qu'elle soit retournée? – alex
Non. Je veux que '$ value' devienne quel que soit le HTML, et' \ $ value' pour qu'il devienne '$ value'. – Kayla