Disons que je récupère la valeur d'un <textarea>
en utilisant jQuery. Comment puis-je remplacer une partie de la valeur à l'aide de JavaScript/jQuery. Par exemple:
chaîne: "Hey I'm $$zach$$"
remplacer $$zach$$
avec <i>Zach</i>
Et garder le reste de la chaîne intact?
Utilisez un regex remplacer:
yourTextArea.value = yourTextArea.value.replace(/\$\$(.+?)\$\$/, '<i>$1</i>')
Explication de l'expression régulière:
\$\$ two dollar signs
( start a group to capture
. a character
+ one or more
? lazy capturing
) end the group
\$\$ two more dollar signs
Le groupe de capture est ensuite utilisé dans la chaîne '<i>$1</i>'
. $1
fait référence au groupe que le regex a capturé.
Utilisez ceci:
str.replace(/\${2}(.*?)\${2}/g, "<I>$1</I>");
\${2} matches two $ characters
(.*?) matches your string to be wrapped
\${2} same as above
/g matches globally
Si vous vouliez quelque chose dans jQuery:
$("#txt").val().replace(/\${2}(.*?)\${2}/g, "<I>$1</I>");
Balisage:
<textarea id="txt">I'm $$Zach$$</textarea>
Enveloppez-le dans une fonction pour une meilleure utilisation:
var italics = function (str) {
return str.replace(/\$\$(.*?)\$\$/g, "<I>$1</I>");
}
italics($("#txt").val());
Il semble que vous souhaitiez créer une syntaxe similaire à Markdown. Pourquoi ne pas simplement utiliser un analyseur Markdown pour vos champs au lieu de réinventer la roue?
Showdown JS est activement développé et vous obtenez la même syntaxe Markdown qu'avec toute autre syntaxe Markdown.
Utilisation de la chaîne .replace
la méthode fera l'affaire.
.replace(/\$\$(.*?)\$\$/g, '<I>$1</I>')
Utilisez ceci, changez le lien et la balise pour la fonction linkify étendue:
String.prototype.linkify = function() {
var wikipediaPattern = /<wikipedia>(.+?)<\/wikipedia>/g;
return this.replace(wikipediaPattern, '<a href="http://fr.wikipedia.org/wiki/$1">$1</a>');
}