Строка JavaScript/jQuery заменяется регулярным выражением
Скажем, я получаю значение a <textarea>
с помощью jQuery. Как я могу заменить часть значения с помощью JavaScript/jQuery. Например:
string: "Hey I'm $$zach$$"
замените $$zach$$
на <i>Zach</i>
И сохраните оставшуюся часть строки без изменений?
Ответы
Ответ 1
Используйте замену регулярного выражения:
yourTextArea.value = yourTextArea.value.replace(/\$\$(.+?)\$\$/, '<i>$1</i>')
Объяснение регулярного выражения:
\$\$ two dollar signs
( start a group to capture
. a character
+ one or more
? lazy capturing
) end the group
\$\$ two more dollar signs
Затем группа захвата используется в строке '<i>$1</i>'
. $1
относится к группе, которую зарегистрировало регулярное выражение.
Ответ 2
Используйте это:
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
jsFiddle
Если вы хотите что-то в jQuery:
$("#txt").val().replace(/\${2}(.*?)\${2}/g, "<I>$1</I>");
Разметка:
<textarea id="txt">I'm $$Zach$$</textarea>
jsFiddle
Оберните его в функцию для наилучшего использования:
var italics = function (str) {
return str.replace(/\$\$(.*?)\$\$/g, "<I>$1</I>");
}
italics($("#txt").val());
Похоже, вы хотите сделать синтаксис, похожий на Markdown. Почему бы просто не использовать парсер Markdown для ваших полей, а не изобретать колесо?
Развернутый JS активно развивается, и вы получаете тот же синтаксис Markdown, что и любой другой синтаксис уценки.
Ответ 3
Использование метода string .replace
сделает.
.replace(/\$\$(.*?)\$\$/g, '<I>$1</I>')
Ответ 4
Используйте это, измените ссылку и тег для расширенной функции связывания:
String.prototype.linkify = function() {
var wikipediaPattern = /<wikipedia>(.+?)<\/wikipedia>/g;
return this.replace(wikipediaPattern, '<a href="#" onclick="location.href='http://fr.wikipedia.org/wiki/$1'; return false;">$1</a>');
}