Пользовательский скрипт greasemonkey внедряет переменные в другую переменную - PullRequest
0 голосов
/ 15 марта 2012

Так что в настоящее время я пытаюсь добавить функцию в созданный мной скрипт пользователя.

В настоящее время скрипт пользователя получит некоторый текст в переменную.Теперь есть также 2 переменные, которые в настоящее время предназначены для добавления текста в начало и конец текста в первой переменной.Вот пример кода, который поможет вам лучше понять, что он в данный момент делает

elmTextarea.value   = opening + elmTextarea.value + closing;

Где elmTextarea - это строка, которую получил пользовательский скрипт, а открытия и закрытия - это то, что я положил в начале и в конце.

Теперь я хочу, чтобы переменная elmTextarea включала в себя любую [quote *] blahblahblah [/ quote], по сути, она исключает эти области (не звезда может быть чем-либо, она в формате

[quote='name' pid='20784507' dateline='1331755619'])

но также может быть просто [quote]

Итак, вот небольшой пример, чтобы вы могли лучше понять

, если elmTextarea равно

blahbla
[quote='name' pid='20784507' dateline='1331755619']
some more text
[/quote]

here is some more

[quote='name' pid='20523454507' dateline='1335435619']
some more text in here
[/quote]

and finally this text

это станет

opening + blahbla + closing
[quote='name' pid='20784507' dateline='1331755619']
some more text
[/quote]

opening + here is some more + closing

[quote='name' pid='20523454507' dateline='1335435619']
some more text in here
[/quote]

opening + and finally this text + closing

Итак, у меня есть идея, как это будет работать, и вот моя попытка реализации

var openingquote = closing + "[quote";
var closingquote = "[/quote]" + opening;
elmTextarea.value   = opening + elmTextarea.value + closing;
elmTextarea.value = elmTextarea.value.replace(/[quote/gim, openingquote);
elmTextarea.value = elmTextarea.value.replace(/[\/quote]/gim, closingquote);

, но добавление этих строк в мой код делает мое целоеСкрипт не работает. Есть идеи, почему это не работает и как это исправить.

1 Ответ

1 голос
/ 20 марта 2012

Квадратные скобки имеют особое значение в регулярном выражении. Они также должны быть экранированы:

elmTextarea.value = elmTextarea.value.replace(/\[quote/gim, openingquote);
elmTextarea.value = elmTextarea.value.replace(/\[\/quote]/gim, closingquote);
//                                             ^ Escape [ using \[
...